加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在Django模型字段上设置任意属性,然后在ModelForm中访问它们

发布时间:2020-12-20 13:21:19 所属栏目:Python 来源:网络整理
导读:Django做什么 Django的Model Field“blank”属性,以及在创建ModelForm时它被否定并转换为Form Field“required”属性的方式非常酷.它允许我在它所属的模型上设置属性,但在处理从它创建的ModelForm时具有“required”属性.在模板中渲染时“必需”可用意味着我
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读