class Foo(models.Model)
field1 = models.IntegerField()
field2 = models.IntegerField()
bar_field = models.ForeignKey("Bar", null=True, blank=True)
Dans une vue, on me donne le Foo pk, et à partir de là je dois saisir l'objet Bar
correspondant, le modifier, puis le sauvegarder à nouveau. Quel est le meilleur moyen de le faire?Modification d'objets de clé étrangère
def my_view(request, foo_pk)
foo = get_object_or_404(Foo, pk=foo_pk)
bar = foo.bar_field
if not bar:
bar = Bar()
#bar = Bar(foo=foo) # this is normally how I would do it
# if I were using ManyToMany
bar_form = BarForm(instance=bar) #sent off to the view
#[...]
bar_form.save() #if bar_field was null, this won't get connected to Foo when saved
Le problème est que lorsque je crée l'instance vide de Bar, il est en aucune façon se connecter à Foo. Lorsque je sauvegarde le bar_form
, il sauvegarde/crée l'objet, mais il est tout seul. Comment puis-je retravailler ce code pour qu'il fonctionne quand l'objet existe déjà, et aussi quand il n'existe pas?