當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。