-
Django 會自動生成一個表來管理多對多關係。但是,如果要手動指定中間表,可以使用
through
此選項最常見的用途是當您希望將額外數據與多對多關係相關聯時。
注意
如果您不希望同一實例之間有多個關聯,請添加一個
UniqueConstraint
注意
使用中間模型的遞歸關係無法確定反向訪問器名稱,因為它們是相同的。您需要為其中至少一個設置
related_name
related_name
設置為'+'
。如果您未指定顯式
through
模型,則仍有一個隱式through
模型類可用於直接訪問為保存關聯而創建的表。它具有三個字段來鏈接模型。如果源模型和目標模型不同,則會生成以下字段:
id
:關係的主鍵。<containing_model>_id
:聲明ManyToManyField
的模型的id
。<other_model>_id
:ManyToManyField
指向的模型的id
。
如果
ManyToManyField
指向和指向同一模型,則會生成以下字段:id
:關係的主鍵。from_<model>_id
:指向模型的實例的id
(即源實例)。to_<model>_id
:關係指向的實例的id
(即目標模型實例)。
此類可用於查詢給定模型實例的關聯記錄,如普通模型:
Model.m2mfield.through.objects.all()
本文介紹 django.db.models.ManyToManyField.through
的用法。
聲明
ManyToManyField.through
相關用法
- Python Django ManyToManyField.through_fields用法及代碼示例
- Python Django ManyToManyField.symmetrical用法及代碼示例
- Python Matplotlib.figure.Figure.add_gridspec()用法及代碼示例
- Python Matplotlib.figure.Figure.subplots_adjust()用法及代碼示例
- Python Matplotlib.pyplot.matshow()用法及代碼示例
- Python Matplotlib.axis.Axis.get_tick_space()用法及代碼示例
- Python Matplotlib.pyplot.thetagrids()用法及代碼示例
- Python Matplotlib.axes.Axes.text()用法及代碼示例
- Python Matplotlib.pyplot.ion()用法及代碼示例
- Python Matplotlib.axes.Axes.start_pan()用法及代碼示例
- Python Matplotlib.axes.Axes.get_ylabel()用法及代碼示例
- Python Matplotlib.axis.Axis.get_major_locator()用法及代碼示例
- Python Numpy MaskedArray.argmin()用法及代碼示例
- Python Matplotlib.axis.Tick.get_window_extent()用法及代碼示例
- Python Matplotlib.artist.Artist.set_alpha()用法及代碼示例
- Python Matplotlib.pyplot.xkcd()用法及代碼示例
- Python Matplotlib.colors.TwoSlopeNorm用法及代碼示例
- Python Matplotlib.pyplot.axvspan()用法及代碼示例
- Python Matplotlib.axis.Axis.get_agg_filter()用法及代碼示例
- Python Matplotlib.axis.Axis.get_minorticklabels()用法及代碼示例
- Python Matplotlib.axes.Axes.set_ybound()用法及代碼示例
- Python Numpy MaskedArray.allequal()用法及代碼示例
- Python Matplotlib.pyplot.bone()用法及代碼示例
- Python Matplotlib.axes.Axes.get_path_effects()用法及代碼示例
- Python Matplotlib.axis.Axis.set_picker()用法及代碼示例
注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.db.models.ManyToManyField.through。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。