django modeladmin,readonly_fields和boolean字段 [英] django modeladmin, readonly_fields and boolean fields

查看:326
本文介绍了django modeladmin,readonly_fields和boolean字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

 #在模型中。 py 
class MyModel(models.Model):
...
my_field = models.BooleanField(...)

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

readonly_fields(my_field,...)

我的问题是现在我的布尔字段总是显示为空,独立于字段本身的实际值。



我没有找到任何解决方案对于这个问题,它只发生在我身上吗?



我不知道这可能是否相关,但我正在使用grappelli == 2.4.5



谢谢

解决方案

Ok,



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

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

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

在self.fake_readonly_fields中的field_name:
form.base_fields [field_name] .widget.attrs [disabled] =disabled


返回表单

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



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


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

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:

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. 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 (e.g. 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

这篇关于django modeladmin,readonly_fields和boolean字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆