当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django ManyToManyField.through用法及代码示例


本文介绍 django.db.models.ManyToManyField.through 的用法。

声明

ManyToManyField.through

Django 会自动生成一个表来管理多对多关系。但是,如果要手动指定中间表,可以使用 through 选项指定表示要使用的中间表的 Django 模型。

此选项最常见的用途是当您希望将额外数据与多对多关系相关联时。

注意

如果您不希望同一实例之间有多个关联,请添加一个 UniqueConstraint ,包括 from 和 to 字段。 Django 自动生成的多对多表包含这样的约束。

注意

使用中间模型的递归关系无法确定反向访问器名称,因为它们是相同的。您需要为其中至少一个设置 related_name 。如果您不希望 Django 创建反向关系,请将 related_name 设置为 '+'

如果您未指定显式 through 模型,则仍有一个隐式 through 模型类可用于直接访问为保存关联而创建的表。它具有三个字段来链接模型。

如果源模型和目标模型不同,则会生成以下字段:

  • id :关系的主键。
  • <containing_model>_id :声明 ManyToManyField 的模型的 id
  • <other_model>_idManyToManyField 指向的模型的id

如果 ManyToManyField 指向和指向同一模型,则会生成以下字段:

  • id :关系的主键。
  • from_<model>_id :指向模型的实例的id(即源实例)。
  • to_<model>_id :关系指向的实例的id(即目标模型实例)。

此类可用于查询给定模型实例的关联记录,如普通模型:

Model.m2mfield.through.objects.all()

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.db.models.ManyToManyField.through。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。