Как решить проблему, когда загрузка нескольких изображений работает, но вызов API возвращает пустой массив?

У меня есть Django REST API и есть функция для загрузки нескольких изображений в админке Django. И все работает отлично: пользователь может загружать несколько изображений, а также изображения хранятся в таблице базы данных

DierenWelzijnAdmin_animalimage

Но если я вызываю: http://127.0.0.1:8000/api/animals/ я вижу, что возвращается пустой массив:

{
        "id": 30,        
        "images": "https://dier.blob.core.windows.net/media/media/photos/animals/amphibiance_X04Eh6N_1z0N4Gs_9EPmeMA_6j3axdY_da4cpTO_2VAY67x_hcUVB7f.jpg",       
        "animal_images": []
    },

Это модель:

import sys
from io import BytesIO
from django.core.files.uploadedfile import InMemoryUploadedFile
from django.contrib.auth.models import Permission
from PIL import Image
from django.db import models
from django.conf import settings

class AnimalImage(models.Model):
    animal = models.ForeignKey(
        'Animal', related_name='imag', on_delete=models.CASCADE)
    image = models.ImageField(upload_to='media/photos/animals')

    def __str__(self):
        return f"Image for {self.animal.name}"

class Animal(models.Model):

    images = models.ImageField(
        upload_to="media/photos/animals",   blank=False, null=False, verbose_name="Foto")
    animal_images = models.ManyToManyField(
        AnimalImage, related_name='related_animals', blank=True)

    def img_preview(self):  # new
        return mark_safe(f'<img src = "{self.images.url}" width = "300"/>')
    img_preview.short_description = "Huidige Foto"

    def img_previews(self):
        images = self.images.all()
        return mark_safe(''.join([f'<img src="{img.image.url}" width="100"/>' for img in images]))
    img_previews.short_description = "Thumbnails"

    class Meta:
        verbose_name = "Dier"
        verbose_name_plural = "Dieren"
        # permissions = [("set_display_flag", "Check name is display or not",)]

        super(Animal, self).save()

    def __str__(self):
        return self.name

admin.py файл:

from django.contrib import admin
from django.db import models
from django.forms import RadioSelect
from django.http import HttpResponseRedirect
from django.urls import reverse
from .models import Animal, AnimalImage
from .forms import SetCategoryForm
from django.utils.safestring import mark_safe


class AnimalImageInline(admin.TabularInline):
    model = AnimalImage
    extra = 1


class AnimalAdmin(admin.ModelAdmin):
    inlines = [AnimalImageInline]
    fields = ['name',  'images', 'animal_images', 'img_preview']
    readonly_fields = ['img_preview', 'klasse_name']
    autocomplete_fields = ['category']

    list_display = ('name', 'category_link', 'description')
    search_fields = ['name', 'category__name']  


admin.site.register(Animal, AnimalAdmin)
admin.site.register(AnimalImage)

и serializers.py:

from .models import Animal, Category, AnimalImage
from rest_framework import serializers
from django.contrib.auth.decorators import permission_required


class AnimalImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = AnimalImage
        fields = ['id', 'image']


class AnimalSerializer(serializers.ModelSerializer):
    animal_images = AnimalImageSerializer(many=True, read_only=True)

    class Meta:
        model = Animal
        fields = ['images', 'category', "animal_images"]

    @permission_required("can_view_animal")
    def get_animal(self, obj):
        return obj.get_animal_display()


class SubAnimalSerializer(serializers.ModelSerializer):
    category = serializers.SlugRelatedField(
        slug_field='name', queryset=Category.objects.all()
    )
    uis = serializers.SerializerMethodField(method_name='naming_bool')

    class Meta:
        model = Animal

        fields = ['images', "animal_images"]
        read_only_fields = ['id']

    def naming_bool(self, instance):
        if instance.uis == True:
            return "Ja"
        else:
            return "Nee"

Как изменить код, чтобы свойство "animal_images" в вызове API заполнялось загруженными изображениями?

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