2009-07-12 12 views
0

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?

Antwort

0

Am Ende:

foo.bar_field = bar 
foo.save()