2011-10-25 36 views
2

在管理員中,我想使用內聯元素。我想要類別顯示 它與其相關的項目。Django內聯元素給出多對多關係的錯誤

但我得到這個錯誤:

Exception at /admin/store/category/7/ 
<class 'store.models.Item'> has no ForeignKey to 
<class 'store.models.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) 
+0

除非您正在使用遺留數據庫,否則不需要爲多對多關係定義中介'Categoryhasitem'模型。 – Alasdair

回答

1

語法略有不同,使用內聯顯示多對多關係。

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

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

有關更多詳細信息,請參閱django管理員文檔working with many-to-many models

+0

非常感謝你alasdair。它工作完美。 –