具有动态列表显示的基本管理类

2024-04-25 04:24:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我为所有有一个名为is_active字段的类编写了一个管理类的基类。它允许用户查看表的记录以及is_active字段,这样他们就可以看到哪个记录是活动的,并且可以编辑它。在

对于我的模型中的大多数类,都有一个名为name的字段,因此我可以轻松地在admin.py中编写两行代码,并有一个自定义的管理表示,但问题是对于没有名为name的字段的类,所以我必须在list_display中使用不同的字段。由于这些类的数量很高,所以我正在寻找一种解决方案来动态获取必须在list_display中的字段的名称。任何解决这个问题的想法都将不胜感激。在

模型.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

py管理员

^{pr2}$

Tags: namepy模型selftruefieldsmodeladmin
1条回答
网友
1楼 · 发布于 2024-04-25 04:24:03

您正在查找^{cd1>}https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_list_display

将此功能与^{cd2>}(即^{cd3>}在^{{cd1>}方法中)一起使用,以基于模型创建动态列表显示。

请注意,我个人建议不要将此自动化烘焙到^{cd5>},并分别定义子类^{{cd6>}s之间的不同之处(在本例中,^{cd7>})。更明确和清晰。不过,这是纯粹的观点。

相关问题 更多 >