Фильтрация данных по возрастной группе в django

Я хочу фильтровать свои продукты на основе того, для какой возрастной группы они предназначены. Для этого я планирую использовать поле boolean и фильтровать продукты по нему. У меня есть выпадающее меню, в котором перечислены различные возрастные группы, и когда человек нажимает на одну из них, отображается страница с продуктами, которые имеют boolean true для этой возрастной группы. Вот мои модели

class Product(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE) 
    title = models.CharField(max_length=150)
    image = models.ImageField(null=False, upload_to='images/')
    price = models.DecimalField(max_digits=12, decimal_places=2, default=0)
    amount = models.IntegerField(default=0)
    detail = RichTextUploadingField()
    create_at = models.DateTimeField(auto_now_add=True)
    update_at = models.DateTimeField(auto_now=True)
    child = models.BooleanField(default=False)
    teen = models.BooleanField(default=False)
    adult = models.BooleanField(default=False)

    def __str__(self):
        return self.title

Так ли я должен поступать? Если это так, то должен ли я использовать 3 разных views.py для каждого булеана или есть какой-нибудь эффективный способ? Заранее спасибо!

Нет, вам не нужно 3 views, чтобы показать это. Вы можете получить значение, которое пользователь отправляет через форму вот так request.GET, если вы не указали ни одного method атрибута в форме или для POST запроса вы можете получить данные, используя request.POST.
. Предположим, что вы используете чистый Django с функциональной основой views. Тогда ваше представление будет выглядеть следующим образом.

def get_products(request):

    # getting the gender group you passed via form
    gender_group = request.GET.get("gender_group")

    # assuming you are passing `child`, `teen` and `adult` through from drop-down value
    user_products = Products.objects.filter(**{gender_group: True})

    return render(request, "you_template_name.html", {"products": user_products})

Предполагается, что ваша html-форма будет чем-то вроде этой.

  <form method="get">
        <!-- you other fields -->
      <select name="gender_group">
        <option value="child">Child</option>
        <option value="teen">Teen</option>
        <option value="adult">Adult</option>
      </select>
    </form>

@Mubashar javed Вы правы. Я просто добавил две вещи, и это сработало.

 <Form action="{% url 'get_products' %}" method="get">
  <select name="gender_group">
        <option value="child">Child</option>
        <option value="teen">Teenager</option>
        <option value="adult">Adult</option>
        <input type="submit" value="Submit">
  </select>
 </Form>
Вернуться на верх