Фильтр по категории в 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
Вернуться на верх