Как вернуть значения, которые являются 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."
}