Django editable = False并仍显示在fieldsets中?

时间:2013-02-21 16:12:47

标签: django django-admin

我的models.py中有一个图像字段......

 qr_image = models.ImageField(
        upload_to="public/uploads/",
        height_field="qr_image_height",
        width_field="qr_image_width",
        null=True,
        blank=True,
        editable=False
    )

当它是editable=False时,我在尝试显示时遇到了一个令人讨厌的错误。我不希望该字段可编辑,但我希望图像显示在管理员“编辑”页面,即字段集

我是Django的新手,有人可以告诉我这是否可行并指出我在正确的方向?

谢谢。

2 个答案:

答案 0 :(得分:11)

如果你有这样的ModelAdmin:

class MyModelAdmin(admin.ModelAdmin):

    fieldsets = [
        ('Fieldset', {'fields': ['model_field', 'another_field', 'readonly_field']}),
    ]

其中readonly_fieldeditable=False或者如果它是带有auto_now_add=True的DateTimeField,那么访问模型的管理页面将导致找不到字段错误。

要在字段集中包含只读字段,请包含readonly_fields,如下所示:

class MyModelAdmin(admin.ModelAdmin):

    fieldsets = [
        ('Fieldset', {'fields': ['model_field', 'another_field', 'readonly_field']}),
    ]
    readonly_fields = ('readonly_field',)

答案 1 :(得分:3)

实现此目的的一种简单方法是在ModelAdmin中将字段设为只读:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields