Django内联元素为多对多关系提供错误

时间:2011-10-25 19:48:48

标签: python django inline

在管理员中我想使用内联元素。我想要显示类别 它与之相关的项目。

但是我收到了这个错误:

Exception at /admin/store/category/7/
<class 'store.models.Item'> has no ForeignKey to
<class 'store.models.Category'>

当然,这是真的,因为我选择使用Category来指向 它有的物品。 但是,我怎样才能让管理员在线列出所有项目 给出的类别有? 我怎样才能解决这个错误?

背景:

class Category:
    items=models.ManyToManyField(Item,through='Categoryhasitem')'

class Categoryhasitem(models.Model):
    category = models.ForeignKey(Category, db_column='category')
    item = models.ForeignKey(Item, db_column='item')

class Item(models.Model):
    id = models.AutoField(primary_key=True)

这是我的admin.py文件。

class ItemInline(admin.TabularInline):
    model=Item
class CategoryAdmin(admin.ModelAdmin):
    inlines=[ItemInline,]
class ItemAdmin(admin.ModelAdmin):
    pass
admin.site.register(Category, CategoryAdmin)
admin.site.register(Item, ItemAdmin) 

1 个答案:

答案 0 :(得分:1)

使用内联显示多对多关系的语法略有不同。

class ItemInline(admin.TabularInline):
    model = Category.items.through

class CategoryAdmin(admin.ModelAdmin):
    inlines = [
        ItemInline,
    ]
    exclude = ('items',)

有关详细信息,请参阅working with many-to-many models的django管理员文档。