Django:排除的字段被保存
Django : Excluded fields are saved
我有一个模型:
from django.db import models
from tinymce.models import HTMLField
class Team(models.Model):
name = models.CharField(max_length=100, verbose_name='Team name')
city = models.CharField(max_length=100, verbose_name='Team city')
biography = HTMLField(verbose_name='Team biography')
country = models.ForeignKey('Country')
slug = models.SlugField(max_length=100)
def __str__(self):
return self.name
class Country(models.Model):
name = models.CharField(max_length=100, verbose_name='Country name')
code = models.CharField(max_length=5, verbose_name='Country code')
def __str__(self):
return self.code
以及此模型的表格:
from django import forms
from teams.models import Team
class TeamForm(forms.ModelForm):
class Meta:
model = Team
fields = (
'biography',
'city',
'country'
)
这是我的观点:
def add(request):
if request.method == 'POST':
form = TeamForm(request.POST)
if form.is_valid():
send = True
form.save()
else:
form = TeamForm()
return render(request, 'teams/add.html', locals())
如您所见,我的所有模型字段都是必需的,因为我没有在模型属性中将参数 'null' 添加到 True。
在我的 ModelForm 中,为了测试,我只指定字段 biography、city 和 country。
但是当我填写表格并发送时,数据保存在数据库中,但是缺少名称和 slug....
为什么我没有 Django 异常?
感谢您的帮助
不过,这些字段都没有保存为 Null。它们都是字符字段(SlugField 是 CharField 的子类),一个空的字符字段被保存为一个空字符串——从数据库的角度来看这是完全有效的。
我有一个模型:
from django.db import models
from tinymce.models import HTMLField
class Team(models.Model):
name = models.CharField(max_length=100, verbose_name='Team name')
city = models.CharField(max_length=100, verbose_name='Team city')
biography = HTMLField(verbose_name='Team biography')
country = models.ForeignKey('Country')
slug = models.SlugField(max_length=100)
def __str__(self):
return self.name
class Country(models.Model):
name = models.CharField(max_length=100, verbose_name='Country name')
code = models.CharField(max_length=5, verbose_name='Country code')
def __str__(self):
return self.code
以及此模型的表格:
from django import forms
from teams.models import Team
class TeamForm(forms.ModelForm):
class Meta:
model = Team
fields = (
'biography',
'city',
'country'
)
这是我的观点:
def add(request):
if request.method == 'POST':
form = TeamForm(request.POST)
if form.is_valid():
send = True
form.save()
else:
form = TeamForm()
return render(request, 'teams/add.html', locals())
如您所见,我的所有模型字段都是必需的,因为我没有在模型属性中将参数 'null' 添加到 True。 在我的 ModelForm 中,为了测试,我只指定字段 biography、city 和 country。
但是当我填写表格并发送时,数据保存在数据库中,但是缺少名称和 slug....
为什么我没有 Django 异常? 感谢您的帮助
不过,这些字段都没有保存为 Null。它们都是字符字段(SlugField 是 CharField 的子类),一个空的字符字段被保存为一个空字符串——从数据库的角度来看这是完全有效的。