Фильтр по категории в django
Я делал проект на Django & react с использованием RestAPI, чтобы разобраться в нем более глубоко. У меня возникла проблема с частью представления. Есть модели; Course, CourseCategory.
CourseCategory - это информация о том, к какой категории относится курс (которая является ForeignKey).
У меня есть список всех курсов на одной странице, когда нажимается определенная категория. Но я не знаю, как сделать это правильным образом.
Вот моя модель
class CourseCategory(models.Model):
title = models.CharField(max_length=150)
description = models.TextField()
def __str__(self):
return self.title
class Course(models.Model):
category = models.ForeignKey(CourseCategory, on_delete=models.CASCADE, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
name = models.CharField(max_length=100, null=False , blank= False)
brief = models.TextField(null=False , blank= False)
image = models.ImageField(upload_to='img/%y/m/%d', default='img/1.png')
def __str__(self):
return self.name
и вот мое представление, где я пытался написать функцию фильтра
class CourseList(generics.ListCreateAPIView):
queryset = Course.objects.all()
serializer_class = CourseSerializer
#permission_classes = [IsAuthenticated]
#authentication_classes = [TokenAuthentication]
def get_queryset2(self):
qs = super().get_queryset()
if 'result' in self.request.GET:
cat = int(self.request.GET['result'])
qs = Course.objects.filter( category=cat )
return qs
когда пытаюсь проверить это, написав id категории, это не работает вот так введите описание изображения здесь введите описание изображения здесь
есть ли кто-нибудь, кто может помочь, пожалуйста
Здравствуйте, вы можете реализовать это в два этапа. Сначала вы можете получить экземпляр категории, используя "cat", а затем использовать экземпляр категории для фильтрации данных курса. Я не уверен, что здесь представляет "cat", но я предполагаю, что это название категории.
def get_queryset2(self):
qs = super().get_queryset()
if 'result' in self.request.GET:
cat = int(self.request.GET['result'])
cat_ins = CourseCategory.objects.filter(title=cat)
qs = Course.objects.filter(category=cat_ins)
return qs