管理员中的Django GenericForeignKey

时间:2011-07-17 05:51:03

标签: python django django-admin

class Comment(models.Model):
    text = models.TextField()
    timestamp = models.DateTimeField(auto_now_add = True)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

class Product(models.Model):
    name = models.CharField(max_length = 40)
    comments = generic.GenericRelation(Comment)

    def __unicode__(self):
        return self.name

在Django管理员中,如果可能的话,我会在“评论”页面下看到内容对象的__unicode__,例如可以是Product。

这件事:

所有评论

评论1 - 产品 - Foo Bar(产品的 unicode ) - 时间戳

评论2 - UserProfile - Foo Bar(UserProfile的 unicode ) - 时间戳

admin.py 的想法?

1 个答案:

答案 0 :(得分:1)

我建议在评论模型中添加 unicode 方法:

def __unicode__(self):
    return 'Comment %s - to  a %s - %s' % (self.pk, self.content_type, self.content_object.__unicode__(), self.timestamp)

如果您使用标准型ModelAdmin,则无需更改admin.py。