我有两个模型:

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_typeobject_idsecondGenericRelation上是created by the Second.r

关于python - _meta.get_all_field_names()中的GenericForeignKey名称错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17028886/

10-11 04:45