-
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。