我正在尝试将血型复制为图中定义的模型。在我的 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'
添加回答
举报
0/150
提交
取消