如何在Django模型字段上设置任意属性,然后在ModelForm中访问它们
Django做什么
Django的Model Field“blank”属性,以及在创建ModelForm时它被否定并转换为Form Field“required”属性的方式非常酷.它允许我在它所属的模型上设置属性,但在处理从它创建的ModelForm时具有“required”属性.在模板中渲染时“必需”可用意味着我可以做一些很酷的事情,比如在所需字段的显示标签上添加星号. 模型 class Employee(models.Model): name = models.CharField(blank=False) public_bio = models.TextField(blank=False) salary= models.DecimalField(max_digits=15,decimal_places=2,blank=False) personnel_notes = models.TextField(blank=True) 模板(使用ModelForm) {% for field in form %} <p> {{ field.label }}{% if field.required %}*{% endif %} {{ field }} </p> {% endfor %} 我想要它做什么 但是如果我想用自己的新属性做什么呢?它不需要以空白的方式否定/翻译 – >必需的,但我想在我的FormFields上访问我在模型字段上定义的新属性.例如,假设我想向用户明确可能发布的字段: 模型 class Employee(models.Model): name = models.CharField(blank=False,publishable=True) public_bio = models.TextField(blank=False,publishable=True) salary= models.DecimalField(max_digits=15,blank=False,publishable=False) personnel_notes = models.TextField(blank=True,publishable=False) 模板(使用ModelForm) {% for field in form %} <p> {{ field.label }}{% if field.required %}*{% endif %} {% if field.publishable %}(may be published){% endif %} {{ field }} </p> {% endfor %} 有没有办法做到这一点?尝试一下,我立即遇到模型定义的问题,其中django.db.models.fields.Field .__ init __()甚至不接受kwargs.如果这是不可能的,任何解决方法的想法,以获得所需的行为? 解决方法
请注意,publishable应该是forms.Field上的属性,而不是models.Field上的属性,因此它将出现在模板中.
您可以在要在表单初始化中发布的字段中明确添加它,并在呈现时可以使用它: class PublishableForm(forms.Form): name = forms.CharField() def __init__(*args,**kwargs) super(PublishableForm,self).__init__(*args,**kwargs) self.name.publishable = True (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |