Python 如何在Django Admin中显示多对多模型中的所有字段
我有以下型号:Python 如何在Django Admin中显示多对多模型中的所有字段,python,django,django-admin,many-to-many,displayobject,Python,Django,Django Admin,Many To Many,Displayobject,我有以下型号: class ModelA(models.Model): some_field_A = models.CharField() some_other_field_A = models.CharField() class ModelB(models.Model): some_field_B = models.CharField() many_to_many_relation = models.ManyToManyField(ModelA) 在
class ModelA(models.Model):
some_field_A = models.CharField()
some_other_field_A = models.CharField()
class ModelB(models.Model):
some_field_B = models.CharField()
many_to_many_relation = models.ManyToManyField(ModelA)
在admin.py
中,我正在使用filter\u horizontal编辑ManyToManyField:
class ModelB(admin.ModelAdmin):
model = ModelB
filter_horizontal = ('many_to_many_relation',)
但是它只显示一些字段\u A
,我希望它显示ModelA中的两个字段,因为ModelA中的条目是唯一的,这取决于两个字段,正如您从图片中看到的,有多个条目具有相同的值(即一些字段\u A=EUV
)但是它们对于某些\u其他\u字段\u A有不同的值
:
我不确定这是否正是您正在寻找的解决方案,但您可以覆盖
ModelA
的\uuu str\uuuu
方法,以单行方式返回信息
例如:
class ModelA(models.Model):
first_field = models.CharField(max_length=16)
second_field = models.CharField(max_length=16)
def __str__(self):
return f"{self.first_field} ({self.second_field'})"
然后,您的管理视图应将每个对象显示为“foo(bar)”它显示您在
模型A
中定义的\uu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(…)
方法的结果,因此如果您在\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
因此,您可以更改此方法并返回两个字段:
class ModelA(models.Model):
some_field_A = models.CharField()
some_other_field_A = models.CharField()
def __str__(self):
return f'{self.some_field_A} {self.some_other_field_A}'
类ModelA(models.Model):
一些\u字段\u A=models.CharField()
some_other_field_A=models.CharField()
定义(自我):
返回f'{self.some\u field\u A}{self.some\u other\u field\u A}'
它使用了您在ModelA
中定义的\u str\u
方法。非常感谢!你能把它作为答案贴出来吗?这样我就可以把它标记为正确的!就是这样!非常感谢。