python – Django中的动态表单要求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django中的动态表单要求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2274字,纯文字阅读大概需要4分钟。
内容图文
![python – Django中的动态表单要求](/upload/InfoBanner/zyjiaocheng/790/dee61cbe6dd642faba1cdfa04c48f85d.jpg)
我即将开始一个大型的Django项目.关键功能是表单处理.应用程序的用户将会使用很多表单.一个要求是应该可以在应用程序的管理界面中编辑表单.
也就是说,不需要添加/删除表单字段.但是应该可以编辑表单字段属性.例如,改变哪些领域是必需的等等.
对于如何做到这一点,任何人都有任何好的解决方案.我想我可能必须继承我想要动态的字段并在那里做一些事情.我猜所有模型字段都必须有“blank = True / null = True”,并且有些如何在单独的模型(?)中添加一些元信息,这些模型声明了需要字段的模型.然后在显示和验证表单时使用该信息.
在我开始这样做之前,我真的想要如何设计这样一个解决方案的一些意见,任何人都有关于如何做的想法?
经过更多的研究,我已经了解到你可以使用工厂函数做一个带有工程函数的工具,这些函数会返回给定属性集的表单.所以看起来问题不是那么难解决.
我将创建一个函数,返回一个具有正确的属性/字段集的表单.但是我没有找到一个好的解决方案的部分是如何在管理界面中管理它.我想我会创建一个db.Model来存储有关其他模型字段的信息.我可以设置哪里是必需的等等.
然后在返回表单的函数中,转到该模型并返回具有正确属性的表单.但是如何以一种好的方式制作该模型(应该反映另一个模型字段)?
解决方法:
您应该使用某些模型.对于可能以这种方式自定义的每个表单,必须创建新的数据库条目.我猜,它应该是这样的:
class FormSettings(Model):
form = CharField(..)
class FormAttrib(Model):
form_settings = ForeignKey(FormSettings)
field = CharField(..)
attrib_name=CharField(..)
attrib_value=CharField(..)
在FormSettings.form中,你应该存储一些表单的地址,比如说.当构建表单时(在init中),它应该在db中查找条目并使用为其描述的attribs.
如果为表单使用自己的元类,并在创建类时在数据库中注册(创建正确的FormSettings条目),则可以轻松创建db条目.它将在进程启动时完成一次,这应该不会那么糟糕.
我希望它有所帮助.如果您还有其他问题,我会很乐意提供帮助:-)我喜欢django的非标准设备:-)这是所有乐趣开始的地方:-)
编辑:
好吧,比方说,你想拥有app food并用food_name字段组成FavouriteFoodForm.您将formsettings表中的数据库存储为food.FavouriteFoodForm并添加一个属性设置:field =’food_name’,attrib_name =’required’,attribute_value =’True'(它不是完美的,但它仍然不是那么糟糕’).
在FavouriteFoddForm中你没有在数据库中查找设置,所以你这样做:
settings = FormSettings.objects.get(form=app_name + self.__class__.name)
并迭代设置
for setting in settings.formattrib_set():
在这里你简单地调用exec并设置适当的属性:
exec("getattr(self, settings.field)[attrib_name] = %s" % attrib_value)
这应该将属性设置为required = True.
内容总结
以上是互联网集市为您收集整理的python – Django中的动态表单要求全部内容,希望文章能够帮你解决python – Django中的动态表单要求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。