Я пытаюсь создать панель поиска, где пользователь может выбрать категорию и написать название продукта. Таким образом, я могу отображать все продукты в этой категории, где название продукта совпадает с тем, что он написал при вводе текста.
Итак, у меня есть Категория -> Подкатегория - > Продукт. Есть ли способ получить объект категории из модели продукта? (У меня нет поля для категории в модели продукта)
Вот мой файл models.py:
# models.py
class Category(models.Model):
name = models.CharField(max_length=100, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'Categories'
def __str__(self):
return self.name
class Subcategory(models.Model):
category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, related_name='subcategories')
name = models.CharField(max_length=200, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
top5 = models.BooleanField(default=False, null=True, blank=True)
featured = models.BooleanField(default=False, null=True, blank=True)
class Meta:
verbose_name_plural = 'Subcategories'
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
subcategory = models.ForeignKey(Subcategory, on_delete=models.SET_NULL, null=True, related_name='products')
image = models.ImageField(null=True, blank=True, upload_to='products/')
price_old = models.DecimalField(decimal_places=2, max_digits=7, null=True, blank=True)
price_new = models.DecimalField(decimal_places=2, max_digits=7, null=True, blank=True)
description = models.TextField()
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
# @property
# def category(self):
# return self.subcategory.category
Как видите, я пытался создать свойство, чтобы получить категорию, но теперь изо всех сил пытаюсь фильтровать продукты, относящиеся к одной и той же категории
Вот мой файлviews.py:
Я пытаюсь создать панель поиска, где пользователь может выбрать категорию и написать название продукта. Таким образом, я могу отображать все продукты в этой категории, где название продукта совпадает с тем, что он написал при вводе текста. Итак, у меня есть Категория -> Подкатегория - > Продукт. Есть ли способ получить объект категории из модели продукта? (У меня нет поля для категории в модели продукта) Вот мой файл models.py: [code]# models.py
class Category(models.Model): name = models.CharField(max_length=100, null=True, blank=True) created = models.DateTimeField(auto_now_add=True) class Meta: verbose_name_plural = 'Categories' def __str__(self): return self.name
class Subcategory(models.Model): category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, related_name='subcategories') name = models.CharField(max_length=200, null=True, blank=True) created = models.DateTimeField(auto_now_add=True) top5 = models.BooleanField(default=False, null=True, blank=True) featured = models.BooleanField(default=False, null=True, blank=True) class Meta: verbose_name_plural = 'Subcategories' def __str__(self): return self.name
# @property # def category(self): # return self.subcategory.category [/code] Как видите, я пытался создать свойство, чтобы получить категорию, но теперь изо всех сил пытаюсь фильтровать продукты, относящиеся к одной и той же категории Вот мой файлviews.py: [code]def search_products(request): q = request.GET.get('q') if request.GET.get('q') != None else '' category = Category.objects.get(name=request.GET['category']) products = Product.objects.filter(name__icontains=q, category=category)