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
方法。非常感谢!你能把它作为答案贴出来吗?这样我就可以把它标记为正确的!就是这样!非常感谢。