第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是在Django中使用的`related_name`?

什么是在Django中使用的`related_name`?

桃花長相依 2019-07-23 17:51:58
什么是在Django中使用的`related_name`?什么是related_name對on ManyToManyField和ForeignKey字段有用的參數(shù)?例如,給出以下代碼,有什么影響related_name='maps'?class Map(db.Model):     members = models.ManyToManyField(User, related_name='maps',                                      verbose_name=_('members'))
查看完整描述

3 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗 獲得超9個贊

related_name屬性指定從User模型返回到模型的反向關(guān)系的名稱。

如果不指定related_name,Django會自動使用一個帶有后綴的型號的名稱創(chuàng)建_set,例如User.map_set.all()。

如果指定,例如related_name=mapsUser模型中,User.map_set仍然可以工作,但User.maps.語法顯然有點清潔,少笨重; 例如,如果您有一個用戶對象current_user,則可以使用該模型current_user.maps.all()獲取與之Map關(guān)系的所有模型實例current_user

Django文檔有更多的細(xì)節(jié)。


查看完整回答
反對 回復(fù) 2019-07-23
?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊

要添加到現(xiàn)有答案相關(guān)名稱是必須的,以防模型中有2個FK指向同一個表。例如,在物料清單的情況下

@with_author class BOM(models.Model): 
    name = models.CharField(max_length=200,null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    tomaterial =  models.ForeignKey(Material, related_name = 'tomaterial')
    frommaterial =  models.ForeignKey(Material, related_name = 'frommaterial')
    creation_time = models.DateTimeField(auto_now_add=True, blank=True)
    quantity = models.DecimalField(max_digits=19, decimal_places=10)

因此,當(dāng)您必須訪問此數(shù)據(jù)時,您只能使用相關(guān)名稱

 bom = material.tomaterial.all().order_by('-creation_time')

它沒有其他工作(至少我無法跳過相同名稱的使用,如果2 FK到同一個表。)


查看完整回答
反對 回復(fù) 2019-07-23
?
繁華開滿天機

TA貢獻(xiàn)1816條經(jīng)驗 獲得超4個贊

related_name如果您有更復(fù)雜的相關(guān)類名,則該參數(shù)也很有用。例如,如果您有外鍵關(guān)系:

class UserMapDataFrame(models.Model):
    user = models.ForeignKey(User)

為了UserMapDataFrame從相關(guān)對象訪問對象User,默認(rèn)調(diào)用將User.usermapdataframe_set.all()是非常難以閱讀的。

使用related_name允許您指定更簡單或更易讀的名稱以獲得反向關(guān)系。在這種情況下,如果您指定user = models.ForeignKey(User, related_name='map_data'),則調(diào)用將是User.map_data.all()。


查看完整回答
反對 回復(fù) 2019-07-23
  • 3 回答
  • 0 關(guān)注
  • 2075 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號