【问题标题】:django modeladmin, readonly_fields and boolean fieldsdjango modeladmin、readonly_fields 和布尔字段
【发布时间】:2014-05-07 05:14:46
【问题描述】:

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

# 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

谢谢

【问题讨论】:

  • 您使用的是 django 开发服务器还是实际的 Web 服务器,并且您收集过静态文件吗?
  • 我在开发服务器上,我已经收集了静态文件...
  • 该字段在记录列表或编辑页面中是否显示为空?那里实际显示的是什么?它是否显示字段名称?
  • 您可能错过了定义 MyModelAdmin 上应显示哪些字段阅读此docs.djangoproject.com/en/dev/ref/contrib/admin/…
  • 显示了字段名称,但它的值显示为空(看这里:it.tinypic.com/r/2iszdbt/8 所有空的“框”应该是数据库中的 True/False 值......)现在我找到了还有这个Q/A,我想知道我的问题是否有解决方案stackoverflow.com/questions/14832739/… ...没有想法了...

标签: python django django-grappelli


【解决方案1】:

好的,

经过一番搜索,我找到了一个解决方案(完美,但一个很好的起点)。我只是在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

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

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

【讨论】:

    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2018-11-20
    • 2012-09-30
    • 2019-09-03
    • 1970-01-01
    • 2011-08-06
    相关资源
    最近更新 更多