Voici un exemple d'extrait qui montre une bonne utilisation de la méthode de sauvegarde. Il s'agit essentiellement de prendre des données à partir d'un formulaire soumis et ensuite ajouter des informations supplémentaires "dans les coulisses".
#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
Voici le Django Docs avec un peu plus d'informations sur save() et COMMIT = False
En tant que aside- je viens de réaliser que si vous ajoutez une chaîne statique à un modèle comme mon exemple montre, vous Je le fais mal. Mais l'idée est là haha.