说我有以下型号:
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>
但相反它看起来好像是空的......为什么会这样?
答案 0 :(得分:2)
请遵循以下内容:
b=Bar(baz=False)
b.save()
f = Foo(content_object=b)
f.content_object
这为您提供了理想的结果。
答案 1 :(得分:1)
Content_object
必须分为content_type
和object_id
。在将对象保存到数据库之前,没有object_id
可用。因此,你必须先保存它 - 就像Sandip建议的那样。您也可以采用较短的形式:Baz.objects.create(baz=False)