简体   繁体   English

django modeladmin,readonly_fields和布尔字段

[英]django modeladmin, readonly_fields and boolean fields

I've a simple model with a boolean field in it, and the related admin view: 我有一个简单的模型,其中有一个布尔字段,以及相关的管理视图:

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

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

    readonly_fields ("my_field", ...)

My problem is that now my boolean field appears always empty, independently from the actual value of the field itself. 我的问题是,现在我的布尔字段始终显示为空,与字段本身的实际值无关。

I didn't find any solution to this problem, does it happen only to me? 我没有找到解决此问题的任何方法,这仅发生在我身上吗?

I don't know if it may be relevant, but I'm using grappelli == 2.4.5 我不知道是否可能相关,但是我正在使用grappelli == 2.4.5

Thanks 谢谢

Ok, 好,

after some searching I've found a solution (perfectible, but a good starting point). 经过一番搜索,我找到了一个解决方案(虽然完美,但是一个很好的起点)。 I've simply overridden the get_form(...) model in my concretization of ModelAdmin : 在我的ModelAdmin具体化中,我只是重写了get_form(...)模型:

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

I renamed the list of my readonly fields to fake_readonly_fields , in order not to mess with Django readonly_fields . 我将只读字段的列表重命名为fake_readonly_fields ,以免与Django readonly_fields fake_readonly_fields This works for textboxes, checkboxes and selects (I guess also for radio buttons, but I didn't verify it...). 这适用于文本框,复选框和选择框(我想也适用于单选按钮,但我没有对其进行验证...)。 Now I'm looking for a solution for upload file inputs ... 现在,我正在寻找上传文件输入的解决方案...

Btw I don't know if this solution can cause "security" problems (eg some crafted message to the server can overcome my html-disabled fields, and pass new data to overwrite old values ...) but that's a different (still relevant) topic 顺便说一句,我不知道此解决方案是否会导致“安全性”问题(例如,向服务器发送的某些精心制作的消息可以克服我的html禁用的字段,并传递新数据以覆盖旧值...),但这是不同的(仍然相关) ) 话题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM