Редактирование объектов внешнего ключа - PullRequest
0 голосов
/ 13 июля 2009
class Foo(models.Model)
    field1 = models.IntegerField()
    field2 = models.IntegerField()
    bar_field = models.ForeignKey("Bar", null=True, blank=True)

В представлении мне дан Foo pk, и после этого мне нужно взять соответствующий объект Bar, отредактировать его и затем сохранить его снова. Какой лучший способ сделать это?

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

Проблема в том, что когда я создаю пустой экземпляр Bar, он никак не связан с Foo. Когда я сохраняю bar_form, он сохраняет / создает объект, но он просто стоит один. Как я могу переработать этот код так, чтобы он работал, когда объект уже существует, а также когда он не существует?

1 Ответ

0 голосов
/ 13 июля 2009

В конце:

foo.bar_field = bar
foo.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...