是否应该在每个create
方法之后调用save方法,或者调用create
方法是否会自动调用save
方法?
如果在创建对象后自动调用save
方法,那么save
方法的用例是什么?
感谢。
答案 0 :(得分:8)
答案 1 :(得分:3)
当您修改通过save
之外的任何其他方式获得的对象时,应使用create
方法,例如.objects.get
。否则,您的修改将丢失。
答案 2 :(得分:1)
这是一个示例代码段,可以很好地用于save方法。这基本上是从提交的表单中获取数据,然后在“幕后”添加其他信息。
#Model
class Foo(models.Model):
field_one = models.CharField(max_length=10)
field_two = models.CharField(max_length=10)
field_three = models.CharField(max_length=10)
#Form
class FooForm(ModelForm):
class Meta:
model = Foo
exclude = ('field_three') #form will just show field_one and field_two
#View
def FooView(request):
if request.method == 'POST'
form = FooForm(request.POST) #gets field_one and two from form data
if form.is_valid():
new_foo = form.save(commit = False) #doesn't actually save yet
new_foo.field_three = 'Foobar!' #add data to field_three
new_foo.save() #now it saves all 3 fields
else:
form = FooForm()
return #add some sort of http response here
这是Django Docs,其中包含有关save()和commit = False
的更多信息顺便说一句 - 我刚才意识到,如果你要像我的示例节目那样向模型添加静态字符串,那么你做错了。但想法是哈哈。