2011-11-17 96 views
1

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

# 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' refers to field 'object' that is missing from the form.

如何解决呢?

回答

3

GenericForeignKey不是数据库中的字段;它是帮助你通过设置object_idtype来定义的对象的API,因此你不需要它。

要解决它,只需把它拿出来,放在OBJECT_ID:

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