django modeladmin,readonly_fields和boolean fields

时间:2014-03-27 23:02:31

标签: python django django-grappelli

我有一个带有布尔字段的简单模型,以及相关的管理视图:

# in models.py
class MyModel(models.Model):
    ...
    my_field = models.BooleanField(...)

# in admin.py
class MyModelAdmin(admin.ModelAdmin):

    readonly_fields ("my_field", ...)

我的问题是,现在我的布尔字段始终为空,与字段本身的实际值无关。

我没有找到解决这个问题的方法,它只发生在我身上吗?

我不知道它是否相关,但我使用的是grappelli == 2.4.5

由于

1 个答案:

答案 0 :(得分:0)

确定,

经过一番搜索后,我找到了一个解决方案(完善,但是一个很好的起点)。我在get_form(...)的具体化中简单地覆盖了ModelAdmin模型:

def get_form(self, *args, **kwargs):

    form = super(SupplierAdmin, self).get_form(*args, **kwargs)

    for field_name in self.fake_readonly_fields:
        form.base_fields[field_name].widget.attrs["disabled"] = "disabled"


    return form

我将我的只读字段列表重命名为fake_readonly_fields,以免弄乱Django readonly_fields。这适用于文本框,复选框和选择(我猜也是单选按钮,但我没有验证它...)。现在我正在寻找上传文件输入的解决方案......

顺便说一下我不知道这个解决方案是否会导致“安全”问题(例如,一些精心设计的服务器消息可以克服我的html禁用字段,并传递新数据来覆盖旧值...)但这是一个不同的(仍然相关)主题