Skip to main content
 首页 » 编程设计

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

2025年05月04日29pengyingh

在管理中我想使用内联元素。我要分类展示 它相关的项目。

但是我得到这个错误:

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)  

请您参考如下方法:

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

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

请参阅 working with many-to-many models 的 django 管理文档了解更多详情。