Django фильтрует продукты в админке и добавляет создать новый продукт комбинации

Я создаю приложение для одежды, в котором у меня есть три модели Product , Category , Outfit . В моей модели продукта есть поля (название, слаг, цена, URL-адрес изображения, цвет, шаблон и т. д.). В категории есть поля (название, описание и продукт в качестве внешнего ключа к продукту). к продукту)

Мой вопрос заключается в том, что после того, как я добавлю эти модели в админку, я хочу создавать наряды из админ-панели, и вот здесь я застрял. Как добавить несколько продуктов в наряд из панели администратора, у меня большая база данных, поэтому выбор из выпадающего меню не вариант, что я хотел бы иметь, это фильтр для продукта со всеми полями, и когда я фильтрую, отображаются продукты, которые нужно выбрать все отфильтрованные продукты и добавить их в наряд.

ЧТОБЫ БЫТЬ БОЛЕЕ ПОНЯТНЫМ, ВОТ ПРИМЕР. Есть один наряд с рубашкой в ​​бордовую полоску, темно-синим карго, черным кожаным ремнем и коричневыми замшевыми мокасинами. Теперь в моем админке при создании наряда мне нужно добавить все эти продукты из моей модели продукта, отфильтровав рубашку (цвет: бордовый и рисунок: полоса), затем карго (темно-синий: цвет), ремень с (кожа: материал) и мокасины. с (материал: замша и цвет: коричневый). Как вы можете видеть, разные продукты нужно фильтровать по-разному, пожалуйста, предложите мне, как я могу добиться этого, чтобы изменить структуру моей модели. Я хочу реализовать это наилучшим образом.


person mohammad imran    schedule 28.04.2016    source источник


Ответы (2)


Вы пробовали filter_horizontal? Администратор

person trantu    schedule 28.04.2016
comment
Нет, можете ли вы привести пример того, как это сделать, я пробовал только с filterset, может ли filter_horizontal фильтровать несколько атрибутов? - person mohammad imran; 28.04.2016

нужно настроить админку как-то так

#models.py
class Outfit(models.Model):

    products = models.ManyToManyField(Product, blank=True)
    title = models.CharField(max_length=30)
    description = models.CharField(max_length=255)

#admin.py
from django.contrib.admin.widgets import FilteredSelectMultiple

class OutfitForm(forms.ModelForm):    
    products = forms.ModelMultipleChoiceField(
        required=False,
        queryset=Product.objects.all(),
        widget=FilteredSelectMultiple("Products", is_stacked=False),
        label='')


class OutfitFormAdmin(admin.ModelAdmin):
    form = OutfitForm
    list_display = ('title', 'description', 'products')
    fieldsets = (
        ('General', {
            'fields': (
                'title',
                'description'
            )
        }),
        ('Select products', {
            'fields': ('products',)
        }),
    )
person Pavan    schedule 29.04.2016
comment
Паван, ваше решение определенно касается того, как я могу выбрать несколько полей и добавить их в свой наряд, но проблема, с которой я сталкиваюсь, заключается в моей модели продукта. Модель имеет разные атрибуты, относящиеся к одному продукту, например, продукт рубашки имеет атрибуты цвета, узора и т. д. Я хочу выберите эти атрибуты и отфильтруйте результаты, затем добавьте этот элемент в мой наряд, в вашем примере я получаю панель поиска для фильтрации нескольких продуктов, но нет возможности выбрать эти атрибуты - person mohammad imran; 29.04.2016