GenericForeignKey和django admin

时间:2011-11-17 09:57:17

标签: django django-models

我尝试使用Django管理员显示和添加评论,但Comment模型使用GenericForeignKey参考。

# in model.py
class Comment(models.Model):
    type      = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    object    = generic.GenericForeignKey('type')
    text      = models.TextField()

# in admin.py
class CommentAdmin(admin.ModelAdmin):
    list_display = ('type', 'object', 'text')
    fields = ('type', 'object', 'text')

admin.site.register(Comment, CommentAdmin)

但Django会产生错误:

  

' CommentAdmin.fields'指对象'对象'缺少的   形式。

如何解决?

1 个答案:

答案 0 :(得分:3)

GenericForeignKey不是数据库中的字段;通过设置object_idtype,您可以通过api为您定义的对象启用它,因此您不需要在表单中使用它。

要修复它,只需将其取出并放入object_id:

fields = ('type', 'object_id', 'text')