將Related_name應用於ManyToManyField和ForeignKey以簡化訪問
問題:
什麼是ManyToManyField 和ForeignKey 欄位的related_name 參數的用途是什麼?考慮下面的範例:
class Map(db.Model): members = models.ManyToManyField(User, related_name='maps', verbose_name=_('members'))
在 User 模型上定義 related_name='maps' 有何效果?
答案:
related_name 屬性定義從引用模型(在本例中為 User)到目前模型(Map)的反向關係的名稱。通常,Django 會自動建立帶有後綴 _set 的反向關係,但指定自訂的 related_name 提供了一種更簡潔的方式來存取相關物件。
在提供的範例中,如果我們有一個名為 current_user 的 User 對象,我們可以使用 current_user.maps.all() 存取與其關聯的地圖。這比預設的反向關係語法 current_user.map_set.all() 更方便。
也可以將 related_name 設為 ' ' 以完全停用建立反向關係。
以上是` related_name` 如何簡化對 Django 的 `ManyToManyField` 和 `ForeignKey` 中相關模型的存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!