Django 做什么
Django 的模型字段“空白”属性,以及当您创建模型表单时它被否定并变成表单字段“必需”属性的方式非常酷。它允许我在它所属的模型上设置属性,但在处理从它创建的 ModelForm 时具有可用的“必需”属性。在模板中渲染时使用“必需”意味着我可以做一些很酷的事情,比如在必填字段的显示标签上添加一个星号。
模型
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 %}
我想要它做什么
但是如果我想用我自己的新属性来做到这一点呢?它不需要像空白-> 必需那样被否定/翻译,但我希望在模型字段上定义的新属性可以在我的表单字段上访问。例如,假设我想向用户明确可能会发布哪些字段:
模型
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, decimal_places=2, 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。如果这是不可能的,有什么解决方法可以获得所需行为的想法吗?