如何解决Django中的未知字段错误

时间:2019-01-01 12:06:39

标签: python django database django-models django-admin

我正在用Django 2.0.2构建一个项目。我想要做的是根据数据库自动更改管理页面中的字段集之一。这是我的代码的一部分:

models.py
class Product(BaseModel):
    number=model.IntergerField("Food", null=True, blank=True, help_text="Food")

    @property
    def number(self):
        return 10 #just return a number for testing

admin.py
class ProductAdmin(admin.ModelAdmin):
    list_display=("number")    
    fieldsets=(('<h1>Food</h1>'), {'fields':('number')})

当我刷新管理页面时,它显示“为Product指定的未知字段(数字)。请检查ProductAdmin类的fieldset属性”。我是Django的新手,不确定出现什么问题。在admin.py中,我添加了“数字”字段,但错误仍然存​​在。我该如何解决?非常感谢,新年快乐。

1 个答案:

答案 0 :(得分:1)

number不是字段,它是属性。您可以将其添加到readonly_fields

class ProductAdmin(admin.ModelAdmin):
    list_display=('number',)
    readonly_fields = ('number',)
    fieldsets=(('<h1>Food</h1>'), {'fields':('number')})

您还应该在自己的媒体资源中添加一个short_description,例如:

class Product(BaseModel):
    number=model.IntergerField("Food", null=True, blank=True, help_text="Food")

    # no decorator
    def number(self):
        return 10 #just return a number for testing
    number.short_description = "The number"
    number = property(number)

documented in the ModelAdmin options section一样。