2011-06-30 38 views

回答

8

save()不需要在create()之後調用。

docs

創建:

用於創建對象並保存所有在一個步驟

其到位創建對象以正常的方式則可以使用的一種簡便方法使用object.save()

2

保存save方法應該用於修改通過除create之外的任何其他方法獲得的對象,例如.objects.get 。否則,您的修改將丟失。

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與保存(一些更多的信息),並承諾=假

作爲aside-我剛剛意識到,如果要添加靜態字符串像我舉的例子一個模型顯示,你'做錯了。但想法是有哈哈。

相關問題