我有两个模型:
class First(models.Model):
name = models.CharField(max_length=50, default='n/a')
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
def __unicode__(self):
return str(self.pk) + ' > ' + self.name
class Second(models.Model):
name = models.CharField(max_length=50, default='n/a')
r = generic.GenericRelation(First)
def __unicode__(self):
return str(self.pk) + ' > ' + self.name
当我这样做时:
from myapp.models import First
First._meta.get_all_field_names()
我得到:
['content_type', u'id', 'name', 'object_id', 'second']
所以看起来这里的 GenericForeignKey
不是 content_object
,而是名为 second
。这是预期的行为吗?
ps
我使用的是 Django 1.5.1。
最佳答案
GenericForeignKey
在幕后使用两个字段;在本例中,它们是 content_type
和 object_id
,因为 those are the default names 。 第二个
是 created by the GenericRelation
在Second.r
上。
关于python - _meta.get_all_field_names() 中的 GenericForeignKey 名称错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17028886/