[英]Stop affecting other objects of Django Many to Many model
我正在嘗試將血型復制為 Model,如此圖片中所定義。 .
在我的 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 文件中,我注冊了 model 如下
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 對象。 因此,我為所有 8 種類型創建了 object。 然后,當我向每個 object 添加關系時,我發現為一個 object 添加給予或接收也會影響其他對象的給予和接收,因此無法復制圖像中的結構。
對於第一個問題,最好只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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.