我刚刚将我的一个模型转换为使用通用外键。模型正常运行,数据库正在报告正确的值,我所拥有的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之前都有效,所以不确定问题可能再存在。
感谢您的帮助。
答案 0 :(得分:0)
...嗯也许
admin.site.register(CartItem, CartItemAdmin)
在admin.py?
的末尾http://docs.djangoproject.com/en/dev/ref/contrib/admin/#using-generic-relations-as-an-inline
我想这是因为你说“内联显示没有数据”所以我猜你没注册它。我知道这听起来很愚蠢,但这就是我的想法。