Django管理员。在同一个列表中列出多个模型

时间:2014-03-19 08:28:13

标签: django django-admin

如果我有3个型号 - 如下所示的香蕉,橙子和苹果。

#models.py
class banana(fruit):
    pass
class apple(fruit):
    pass
class orange(fruit):
    pass

class fruit (models.Model):
    title = models.CharField(max_length="150")
    is_rotten = models.BooleanField(default=False)

    class Meta:
        abstract=True

在管理员中,我想在列表中一起显示所有水果,但是将is_rotten显示为可编辑的复选框,以便可以一起查看所有水果并批量分配is_rotten变量。

class fruitAdmin(admin.ModelAdmin): 
    list_display = ('title', 'is_rotten')
    list_editable = ('is_rotten',)

我已经做到了这一点,但是在同一个管理列表中围绕多个模型进行搜索并不能带来任何好处。是否有可能创建我正在设想的列表?

谢谢,

1 个答案:

答案 0 :(得分:2)

您需要一张fruit表格或另一张表格,其中包含所有水果及其属性(titleis_rotten)。使用你编写的模型,你不能那样做,因为Django admin不支持注册抽象类。< / p>

因此,如果您将fruit课程更改为:

class fruit (models.Model):
    title = models.CharField(max_length="150")
    is_rotten = models.BooleanField(default=False)

保留其他模型:

class banana(fruit):
    pass

class apple(fruit):
    pass

class orange(fruit):
    pass

并将其添加到您的your_app/admin.py模块中:

class FruitAdmin(admin.ModelAdmin):
    list_display = ("title", "is_rotten")

admin.site.register(myapp.models.fruit, FruitAdmin)

使用此代码,您将获得一个列表,如下图所示:

enter image description here