Встроенные элементы Django дают ошибку для отношения многих ко многим - PullRequest
2 голосов
/ 25 октября 2011

В админе я хочу использовать встроенные элементы.Я хочу, чтобы категория отображала элементы, с которыми она связана.

Но я получаю эту ошибку:

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) 

1 Ответ

1 голос
/ 26 октября 2011

Синтаксис немного отличается для отображения отношений «многие ко многим» с использованием встроенного.

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

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

Более подробную информацию см. В документации администратора django для работы с моделями "многие ко многим" .

...