我为所有具有名为11111111111111111111111111111111101110101111100
的字段的类编写了一个管理类的基类。它使用户能够查看表的记录以及is_active
字段,以便他们可以看到哪个记录处于活动状态,并且可以对其进行编辑。
对于我在模型中的大多数类,有一个名为is_active
的字段,因此我可以在name
中轻松编写2行代码,并具有自定义的管理代表,但是问题是没有名为admin.py
的字段的类,所以我必须在name
中使用不同的字段。由于这些类的数量很多,我正在寻找一种解决方案来动态获取必须在list_display
中的字段的名称。任何解决这个问题的想法都会非常感激。
models.py:
list_display
admin.py
class BaseAdmin(admin.ModelAdmin):
list_display=('id','name','is_active')
list_editable = ('is_active',) # this MUST only contain fields that also are in "list_display"
search_fields=('name',)
class ClassA(models.Model):
name=models.CharField(max_length=20, blank=False, unique=True,)
is_active=models.BooleanField(default=True,)
def __str__(self):
return self.name
class ClassB(models.Model):
my_field=models.CharField(max_length=20, blank=False, unique=True,)
is_active=models.BooleanField(default=True,)
def __str__(self):
return self.my_field
答案 0 :(得分:0)
您正在寻找get_list_display
https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_list_display
将其与ModelAdmin.model
(即self.model
方法中的get_list_display
)结合使用,可根据模型创建动态列表显示。
请注意,我个人建议不要将此自动化添加到BaseAdmin
中,并分别定义子类ModelAdmin
(在本例中为list_display
)之间的不同之处。它更明确,更清晰。这是纯粹的意见。