首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django Model Forms -设置必填字段

Django Model Forms -设置必填字段
EN

Stack Overflow用户
提问于 2011-10-07 11:39:03
回答 2查看 32.9K关注 0票数 21
代码语言:javascript
复制
 15 class Profile(models.Model):
 16     """
 17     User profile model
 18     """
 19     user = models.ForeignKey(User, unique=True)
 20     country = models.CharField('Country', blank=True, null=True, default='',\
 21                                max_length=50, choices=country_list())
 22     is_active = models.BooleanField("Email Activated")

我有一个类似上面的模型,将country设置为blank=True, null=True

但是,在显示给最终用户的表单中,我要求填写country字段。

因此,我在Model表单中重新定义了字段,以“强制”它成为必填字段:

代码语言:javascript
复制
 77 class ProfileEditPersonalForm(forms.ModelForm):
 78 
 79     class Meta:
 80         model = Profile
 81         fields = ('email',
 82                   'sec_email',  
 83                   'image',
 84                   'first_name',
 85                   'middle_name',
 86                   'last_name',
 87                   'country',
 88                   'number',
 89                   'fax',)
 90 
 98     country =  forms.ChoiceField(label='Country', choices = country_list())

因此,country字段只是一个例子(有很多这样的字段)。有没有更好、更干练的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-07 13:32:09

您可以在表单中修改__init__中的字段。这是干燥的,因为标签、查询集和其他所有内容都将从模型中使用。这对于覆盖其他内容也很有用(例如,限制查询集/选择、添加帮助文本、更改标签等)。

代码语言:javascript
复制
class ProfileEditPersonalForm(forms.ModelForm):    
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['country'].required = True

    class Meta:
        model = Profile
        fields = (...)

这里有一篇博客文章描述了同样的“技术”:http://collingrady.wordpress.com/2008/07/24/useful-form-tricks-in-django/

票数 68
EN

Stack Overflow用户

发布于 2020-08-09 06:00:00

例如,在Django3.0中,如果您想在用户注册表单中设置必需的电子邮件,您可以设置required=True

代码语言:javascript
复制
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class MyForm(UserCreationForm):
    email = forms.EmailField(required=True) # <- set here

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7682804

复制
相关文章

相似问题

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