maksell
@maksell

Как сделать фильтрацию в django?

Пытался сегодня разобраться как работает django_filters, но не вышло.
Я делаю интернет-магазин и пока сделал фильтрацию только по категории товара, код ниже.
Столкнулся с проблемой, что не понимаю как реализовать доп фильтры ( сортировать по цене, по дате и.т.д)
Может кто-то накинуть варианты ?

#Models.py
class Item(models.Model):

    colors =(
        ('black', 'Черный'),
        ('white', 'Белый'),
        ('bordo', 'Бордовый'),
        ('bej', 'Бежевый'),
        ('green', 'Зеленый')
    )

    item_title = models.CharField('Название', max_length=200)
    item_description = models.TextField('Описание')
    item_size = models.CharField('Размер', max_length=10)
    item_price = models.IntegerField('Цена')
    item_pub_date = models.DateTimeField('Дата публицкации', auto_now=True)
    item_image_1 = models.ImageField('Первая картинка', upload_to="images", null=True)
    item_image_2 = models.ImageField('Вторая картинка', upload_to="images", null=True)
    item_color = MultiSelectField('Цвета', max_length= 100, choices=colors, null=True)
    item_type = models.ForeignKey('ItemType', on_delete = models.CASCADE, null=True)

    
    class Meta:
        verbose_name= 'Товар'
        verbose_name_plural = 'Товар'

    def __str__(self):
        return '{}'.format(self.item_title)
    
class ItemType(models.Model):
    title = models.CharField('Название товара', max_length=200)

    class Meta:
        verbose_name= 'Тип товара'
        verbose_name_plural = 'Тип товара'

    def __str__(self):
        return '{}'.format(self.title)


# views.py
def index(request):
    item = Item.objects.all()
    context ={
        'items':item
    }
    return render(request,'add_item/item.html', context)

def item_type_detail(request, category_name):
    filtred_items= Item.objects.filter(item_type__title= category_name)
    return render (request, 'add_item/item1.html',context={'filtred_items':filtred_items })
  • Вопрос задан
  • 2658 просмотров
Пригласить эксперта
Ответы на вопрос 1
Guest007
@Guest007
Django, Python, Linux и всё такое...
-- убрал абзац --
Если речь о django_filters, то сначала надо определить этот фильтр (как в документации к пакету и написано).
Ну и дальше по тексту.
Один из кратких вариантов - прямо на github странице

Лучше напиши, что уже пробовал и что не получилось.

И прими совет: убери из имён полей этот рефрен item_ Это дублирование тебе же будет всегда мешать. И так ты знаешь, что запрашиваешь инфу из модели Item. Зачем ещё и каждое поле так маркировать? Оставь title, description и т.д.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы