He aquí un fragmento de ejemplo que muestra un buen uso para el método de guardar. Esto es básicamente tomar datos de un formulario enviado y luego agregar información adicional "detrás de escena".
#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
Aquí está la Django Docs con algo más de información sobre save() y comprometerse = False
Como aside- me he dado cuenta de que si va a agregar una cadena estática a un modelo como mi ejemplo muestra, se lo estás haciendo mal Pero la idea está ahí jaja.