我有一个模特:
class Book(models.Model):
name = models.CharField(max_length=100)
alias = models.CharField(max_length=100)
description = models.TextField()
def __unicode__(self):
return self.name
和forms.py中的ModelForm:
class BookForm(ModelForm):
class Meta:
model = Book
所以我想在我的观点中做出类似的事情:
def register_book(request):
if request.method == 'POST':
formul = BookForm(request.POST)
if formul.is_valid():
new_book=formul.save(commit=False)
new_book.alias='foo'
new_book.save()
return HttpResponseRedirect('/')
所以,我正在从一个html“形式”中保存名称&描述,但我收到表单后需要保存的别名。但是没有用。
答案 0 :(得分:2)
您尝试先保存没有别名的模型。您需要先允许空白值才能执行此操作。建议的方法是使用blank
:
alias = models.CharField(max_length=100, blank=True)
答案 1 :(得分:2)
默认情况下,ModelForm
将包含并验证模型的所有字段。如果您始终在视图中自行分配alias
值,则表单中不需要alias
字段,您可以将其排除在外:
class BookForm(ModelForm):
class Meta:
model = Book
fields = ('name', 'description')
# NOTE: you can also use excludes, but many consider it a bad practice
与往常一样,Django docs可以告诉您更多相关信息。