2011-11-17 93 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')