2009-07-12 8 views
0
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?

Répondre

0

A la fin:

foo.bar_field = bar 
foo.save() 
Questions connexes