Как получить категорию из продукта? ДжангоPython

Программы на Python
Ответить
Anonymous
 Как получить категорию из продукта? Джанго

Сообщение Anonymous »

Я пытаюсь создать панель поиска, где пользователь может выбрать категорию и написать название продукта. Таким образом, я могу отображать все продукты в этой категории, где название продукта совпадает с тем, что он написал при вводе текста.
Итак, у меня есть Категория -> Подкатегория - > Продукт. Есть ли способ получить объект категории из модели продукта? (У меня нет поля для категории в модели продукта)
Вот мой файл 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:

Код: Выделить всё

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) 

Подробнее здесь: [url]https://stackoverflow.com/questions/76528517/how-to-get-category-from-product-django[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»