настройка родовых отношений content_object с несохраненной моделью - PullRequest
1 голос
/ 26 января 2012

Скажите, у меня есть следующая модель:

class Foo(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

class Bar(models.Model):
    baz = models.BooleanField()

затем запустите следующий код:

f = Foo(content_object=Bar(baz=False))
print f.content_object

я бы ожидал увидеть что-то вроде:

<Bar: Bar object>

но вместо этого кажется, что он пуст ... почему это?

Ответы [ 2 ]

2 голосов
/ 26 января 2012

Выполните следующие действия:

b=Bar(baz=False)
b.save()
f = Foo(content_object=b)
f.content_object

Это даст желаемый результат для вас.

1 голос
/ 26 января 2012

Content_object нужно разделить на content_type и object_id.И пока вы не сохраните объект в базе данных, object_id не будет доступен.Поэтому вы должны сначала сохранить его - как предложил Sandip.Вы также можете сделать это в более короткой форме: Baz.objects.create(baz=False)

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