In einer Ansicht, ich bin die Foo pk gegeben, und von diesem muss ich das entsprechende Objekt Bar
greifen, bearbeiten Sie es und speichern Sie es erneut. Was ist der beste Weg, dies zu tun?Bearbeiten von Fremdschlüsselobjekten
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
Das Problem ist, dass, wenn ich die leere Instanz der Bar schaffen, ist es nicht in irgendeiner Weise immer zu Foo verbunden. Wenn ich die bar_form
speichere, wird das Objekt gespeichert/erstellt, aber es steht einfach alleine. Wie kann ich diesen Code so umarbeiten, dass er funktioniert, wenn das Objekt bereits existiert und auch wenn es keins gibt?