【问题标题】:ManyToMany Field on Django Admin InterfaceDjango 管理界面上的多对多字段
【发布时间】:2020-06-08 21:07:31
【问题描述】:

在 Django Rest 上,我有一个材料列表字段的多对多关系。材料实例被添加到贷款模型中。它可以通过管理站点添加,但显示不直观:实例与材料混合(实例在括号中)。 有可能必须分开列表吗?一个选择材质,另一个添加/删除链接到材质的实例?

【问题讨论】:

  • 括号是因为那是你模型的__str__
  • 那么你想要什么样的小部件?复选框列表?
  • 谢谢,我想要两个列表:一个包含材料,另一个是根据关系选择的材料实例

标签: django rest many-to-many admin


【解决方案1】:

它在列表中显示的名称是模型上__str__ 方法的结果。因此,如果您想显示其他内容,可以更改__str__ 方法。例如,如果这是带有 name 字段的模型 Material,您可以将其设置为:

class Material(models.Model):
    name = models.CharField(max_length=128, unique=True)

    def __str__(self):
        return self.name

您可以设置filter_horizontal attribute [Django-doc]:

from django.contrib import admin

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    # …
    filter_horizontal = ('materials_field_name',)

因此,这将使用一个带有两个列表的小部件,您可以在其中左右移动。

【讨论】:

  • 过滤器属性是否继承自 ModelAdmin ?因为我已经为通用材料注册了一个带有其他内联字段的内联选项卡
  • 我试过了,但是左栏选择素材后没有过滤实例素材
猜你喜欢
  • 2014-10-20
  • 2011-12-24
  • 2021-06-20
  • 2014-10-15
  • 2011-07-07
  • 1970-01-01
  • 2011-03-10
  • 2011-06-26
  • 2023-03-07
相关资源
最近更新 更多