1

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

# 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

谢谢

4

1 回答 1

1

行,

经过一番搜索,我找到了一个解决方案(完美,但一个很好的起点)。我只是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 禁用字段,并传递新数据以覆盖旧值......)但这是不同的(仍然相关) 话题

于 2014-03-27T23:59:00.950 回答