[英]How to save a field after commit=False with model Form in Django?
我有一个模特:
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“form”中保存了名称和描述,但是在我获得表单后需要保存的别名。 但是没有用。
您尝试先保存模型而不使用别名。 您需要先允许空白值才能执行此操作。 推荐的方法是使用blank
:
alias = models.CharField(max_length=100, blank=True)
默认情况下, 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文档可以告诉你更多关于它的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.