亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

停止影響 Django 多對多模型的其他對象

停止影響 Django 多對多模型的其他對象

慕田峪7331174 2023-05-23 10:21:44
我正在嘗試將血型復制為圖中定義的模型。在我的 models.py 文件中,我有我的代碼來復制這樣的血型class BloodGroup(models.Model):    name = models.CharField(        max_length=3    )    gives = models.ManyToManyField("self")    receives = models.ManyToManyField("self")    def __str__(self):        return self.name在我的 admin.py 文件中,我按如下方式注冊了模型class BloodGroupAdmin(admin.ModelAdmin):    model = BloodGroup    list_display = ['name', 'get_gives', 'get_receives']    def get_gives(self, obj):        return ", ".join([item.name for item in obj.gives.all()])    def get_receives(self, obj):        return ", ".join([item.name for item in obj.receives.all()])admin.site.register(BloodGroup, BloodGroupAdmin)最初,我創建了普通的 BloodGroup 對象,沒有它們的 gives 和 receives 屬性,只提供了它們的名稱。因此,我為所有 8 種類型創建了一個對象。然后,當我向每個對象添加關系時,我發現為一個對象添加給予或接收也會影響其他對象的給予和接收,從而無法復制圖像中的結構。如何在不影響其他對象的情況下定義關系?在我的管理站點中,我看到字段名稱為“get_gives”和“get_receives”。我如何使管理頁面將字段名稱顯示為“提供”和“接收”,但仍將對象顯示為如下圖所示的字符串?
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

對于第一個問題,可能最好只有一個關系gives。從反向查詢receives可以查到。像這樣:

class BloodGroup(models.Model):

? ? name = models.CharField(

? ? ? ? max_length=3

? ? )

? ? gives = models.ManyToManyField("self", related_name="receives", symmetrical=False)

然后你只需要添加對象到gives. receives會自動生成。

對于第二個問題,將short_description屬性添加到函數。像這樣:

get_gives.short_description?=?'Gives'
get_receives.short_description?=?'Receives'


查看完整回答
反對 回復 2023-05-23
  • 1 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號