我有一个带有布尔字段的简单模型,以及相关的管理视图:
# 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
由于
答案 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禁用字段,并传递新数据来覆盖旧值...)但这是一个不同的(仍然相关)主题