Вот пример фрагмента, который показывает хорошее использование метода сохранения.Это в основном берет данные из отправленной формы и затем добавляет дополнительную информацию "за кулисами".
#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 =Ложь
Как отступление - я только что понял, что если вы добавляете статическую строку в модель, как показано в моем примере, вы делаете это неправильно.Но идея есть, ха-ха.