Django 内联元素给出多对多关系错误

发布于 2024-12-12 01:53:15 字数 945 浏览 0 评论 0原文

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

但我得到了这个错误:

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) 

In the admin I want to use inline elements. I want category to display
the items it is related to.

But I get this error:

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

It's true, of-course, since I chose to use Category to point to the
items it has.
But, how can I get the admin to list in-line all the items that a
given Category has?
How can I get around this error?

CONTEXT:

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)

This is my admin.py file.

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) 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

手心的海 2024-12-19 01:53:15

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

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

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

请参阅 django 管理文档 使用多对多模型了解更多详细信息。

The syntax is slightly different to display many-to-many relations using an inline.

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

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

See the django admin docs for working with many-to-many models for more details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文