首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:根据其他字段的值使字段可编辑

问Django:根据其他字段的值使字段可编辑
EN

Stack Overflow用户
提问于 2013-12-24 01:53:07
回答 1查看 1.5K关注 0票数 0

我是Django的新手,在大量的文档中还没有找到答案。我要的是研究的指针,而不是工作代码。话虽如此,我的问题是:

在我的一个模型中,有一个BooleanField (它以checkBox的形式呈现在管理表单中)。我们叫它“A”吧。只有当A被选中时,才有意义编辑其他字段(例如,CharField 'B')。

那么,如果选中A,是否有办法使B只读,甚至将其内容更改为空字符串?谢谢。

(Django 1.5.2,Python 2.7.5)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-24 02:36:39

你需要几样东西才能做到这一点。如果您主要关心UI或数据库中的数据完整性,您可能可以跳过其中的一些。

由于用户可以(想必)在客户端选中/取消选中字段A,因此需要一些Javascript来启用/禁用字段B的外观。这些文档展示了如何在ModelAdmin类中加载自定义JS:

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#modeladmin-asset-definitions

在您的ModelForm中,您可能希望在__init__方法中根据self.instance.field_a的值进行一些检查,并以某种ReadOnlyWidget代替字段B,以替代表单的初始显示。这些文档展示了如何为ModelAdmin提供一个自定义表单类:

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form

如果要动态地编写Javascript,那么跳过这一步只需在客户端完成就更容易了。

最后,如果选中字段A,则可以使用Django模型验证来确保字段B使用空值保存:

https://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20753810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档