我有两个模型:
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']
因此,在这里看起来像是
content_object
而不是GenericForeignKey
。这是预期的行为吗?psIm使用Django 1.5.1。
最佳答案
GenericForeignKey
在幕后使用两个字段;在这种情况下,它们是those are the default names之后的content_type
和object_id
。 second
在GenericRelation
上是created by the Second.r
。
关于python - _meta.get_all_field_names()中的GenericForeignKey名称错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17028886/