Как вернуть значения, которые являются NULL в базе данных, с помощью Django?

Я имею приложение django и пытаюсь написать несколько вызовов api.

У меня есть одна таблица, и я хочу вернуть значения, где category_id равно null.

Так что этот sql оператор работает:

SELECT * FROM public.djangoadmin_category
where djangoadmin_category.category_id is null 
ORDER BY id ASC 

возвращается в качестве вывода:

11  "zoogdieren"    "zoogdieren"    "hoi"   "photos/categories/1_eDJtmdP.jpg"   "2023-01-27 18:25:18.624272+01" "2023-01-27 18:25:18.624272+01" 
12  "amfibieen" "amfibieen" "kujhkjh"   "photos/categories/1_KJDTBPc.jpg"   "2023-01-27 18:25:38.444066+01" "2023-01-27 18:25:38.444066+01" 
13  "vogels"    "vogels"    "kljhkjh"   "photos/categories/1_FGkA44b.jpg"   "2023-01-27 18:26:00.390812+01" "2023-01-27 18:26:00.390812+01" 
21  "reptielen" "reptielen" "reptielen" "photos/categories/1_EoVggfL.jpg"   "2023-01-27 18:55:04.565339+01" "2023-01-27 18:55:04.565339+01" 
23  "schildpadden"  "schildpadden"  "schildpadden"  "photos/categories/1_RkKQ5md.jpg"   "2023-01-27 18:55:51.724641+01" "2023-01-29 12:40:45.014174+01" 

Но теперь я хочу написать вызов API для него, чтобы использовать его для фронтенда.

модель:

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)
    description = models.TextField(max_length=1000)
    images = models.ImageField(upload_to="photos/categories")
    category = models.ForeignKey(
        "Category", on_delete=models.CASCADE, related_name='part_of', blank=True, null=True)
    date_create = models.DateTimeField(auto_now_add=True)
    date_update = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = "category"
        verbose_name_plural = "categories"

    def __str__(self):
        return self.name

urls.py:

from django.urls import path, include
from rest_framework import routers
from .views import CategoryViewSet

router = routers.DefaultRouter()
router.register('categories', CategoryViewSet)

urlpatterns = [
    path('', include(router.urls))
]

serializer:

from rest_framework import serializers
from .models import Animal, Category
class CategorySerializer(serializers.ModelSerializer):
    animals = AnimalSerializer(many=True)
    
    class Meta:
        model = Category
        fields = ['id','name', 'description', 'animals']

А api метод:

from rest_framework import viewsets, status
from rest_framework.decorators import action
from django.http import HttpResponse
from .serializers import CategorySerializer
from .models import Category

class CategoryViewSet(viewsets.ModelViewSet):
    serializer_class = CategorySerializer
    queryset = Category.objects.all()
    
    @action(detail=True, methods=['GET'])
    def main_groups(self, request, pk=None):
        return_groups = Category.objects.filter(category_id__isnull=True ).values()
        
        return  HttpResponse(return_groups, status= status.HTTP_200_OK)

а url, который я использую, вот этот:

http://127.0.0.1:8000/djangoadmin/categories/main_groups

Но это возвращается в качестве вывода:

{
    "detail": "Not found."
}

Вернуться на верх