如何检查 Django 模型中的字段?
How to check field in django model?
我有一个这样的模型。我想查询队名会不会是"Russia",那你需要指定队名
我想检查用户何时将数据输入表单。
如何查看?
RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'
COUNTRY = (
(RUSSIA, "Russia"),
(USA, "USA"),
(GERMANY, "Germany"),
)
class Country(models.Model):
country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA)
name_of_team = models.CharField(max_length=255, blank=True, null=True)
def __unicode__(self):
return self.name_of_team
您只需要对 Country
模型使用 ModelForm
的 clean
方法:
from django import forms
from .models import Country, RUSSIA
class CountryForm(forms.ModelForm):
class Meta:
model = Country
def clean(self):
cleaned_data = self.cleaned_data
country = cleaned_data.get('country')
name_of_team = cleaned_data.get('name_of_team')
if country == RUSSIA and not name_of_team:
self.add_error('name_of_team', 'You must supply a team name')
return cleaned_data
有关表单验证的详细信息,请参阅 https://docs.djangoproject.com/en/1.7/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other。
为了清楚起见,我还建议在 Country
模型中移动选择常量:
class Country(models.Model):
RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'
COUNTRY_CHOICES = (
(RUSSIA, "Russia"),
(USA, "USA"),
(GERMANY, "Germany"),
)
country = models.CharField(max_length=3, choices=COUNTRY_CHOICES,
default=self.RUSSIA)
然后在你的表格中你可以做:
. . .
def clean(self):
. . .
if country == Country.RUSSIA and not name_of_team:
self.add_error('name_of_team', 'You must supply a team name')
return cleaned_data
这主要是个人喜好问题,但我认为它提供了更好的可读性。
我有一个这样的模型。我想查询队名会不会是"Russia",那你需要指定队名
我想检查用户何时将数据输入表单。
如何查看?
RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'
COUNTRY = (
(RUSSIA, "Russia"),
(USA, "USA"),
(GERMANY, "Germany"),
)
class Country(models.Model):
country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA)
name_of_team = models.CharField(max_length=255, blank=True, null=True)
def __unicode__(self):
return self.name_of_team
您只需要对 Country
模型使用 ModelForm
的 clean
方法:
from django import forms
from .models import Country, RUSSIA
class CountryForm(forms.ModelForm):
class Meta:
model = Country
def clean(self):
cleaned_data = self.cleaned_data
country = cleaned_data.get('country')
name_of_team = cleaned_data.get('name_of_team')
if country == RUSSIA and not name_of_team:
self.add_error('name_of_team', 'You must supply a team name')
return cleaned_data
有关表单验证的详细信息,请参阅 https://docs.djangoproject.com/en/1.7/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other。
为了清楚起见,我还建议在 Country
模型中移动选择常量:
class Country(models.Model):
RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'
COUNTRY_CHOICES = (
(RUSSIA, "Russia"),
(USA, "USA"),
(GERMANY, "Germany"),
)
country = models.CharField(max_length=3, choices=COUNTRY_CHOICES,
default=self.RUSSIA)
然后在你的表格中你可以做:
. . .
def clean(self):
. . .
if country == Country.RUSSIA and not name_of_team:
self.add_error('name_of_team', 'You must supply a team name')
return cleaned_data
这主要是个人喜好问题,但我认为它提供了更好的可读性。