Django GenericTabularInline根本不起作用,但模型是正确的

时间:2010-06-25 19:20:35

标签: django django-admin

我刚刚将我的一个模型转换为使用通用外键。模型正常运行,数据库正在报告正确的值,我所拥有的API与新的外键完美配合,零更改(保持相同的字段名称)。

然而,管理员完全失败了。 Inline显示没有数据,尽管有一些(见上文)。这是我的型号代码:

class CartItem(models.Model):
    cart = models.ForeignKey(Cart)
    quantity = models.PositiveIntegerField()
    price_item = models.DecimalField(max_digits=19, decimal_places=2)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField(db_column="shop_item_id")
    shop_item = generic.GenericForeignKey("content_type", "object_id")

相当直白,对吧? admin.py看起来像这样:

class CartItemInline(generic.GenericTabularInline):
   model = CartItem 

class CartAdmin(admin.ModelAdmin):
   inlines = [
        CartItemInline,
   ]

有趣的事实。如果我将'shop_item'添加到内联类中的字段元组,我会收到此错误:

  

'CartItemInline.fields'指的是表单中缺少的字段'shop_item'。

但是......它在那里?我已经尝试了一切,30分钟后,我只是放弃了最有可能解决问题的极其简单的问题,我的眼睛今天根本看不到。 :(

所有这一切在使用GenericForeignKey之前都有效,所以不确定问题可能再存在。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

...嗯也许

admin.site.register(CartItem, CartItemAdmin)

在admin.py?

的末尾

http://docs.djangoproject.com/en/dev/ref/contrib/admin/#using-generic-relations-as-an-inline

我想这是因为你说“内联显示没有数据”所以我猜你没注册它。我知道这听起来很愚蠢,但这就是我的想法。