Django/Wagtail Type error 'ModelBase' object is not iterable
У меня есть проект с трясогузкой. Я создал пользовательскую модель Admin с именем sorting. Я хочу показать данные этой модели в API.
Вот представление в базе данных
Вот models.py
from django.db import models
from wagtail.models import Page, Orderable
from modelcluster.fields import ParentalKey
from blog.models import *
from wagtail.models import Page
from wagtail.admin.panels import PageChooserPanel, FieldPanel, InlinePanel
from django.utils.translation import gettext_lazy as _
from modelcluster.models import ClusterableModel
from modelcluster.fields import ParentalManyToManyField
class IDChoice(models.IntegerChoices):
Featured1 = 0, _('Featured1')
Featured2 = 1, _('Featured2')
Featured3 = 2, _('Featured3')
Featured4 = 3, _('Featured4')
Featured5 = 4, _('Featured5')
class Featured(ClusterableModel):
featured_name = models.IntegerField(default=IDChoice.Featured1,choices=IDChoice.choices, blank=True, null=False, help_text='Featured ID', unique=True)
panels = [
InlinePanel('featured_pages', label="Featured pages"),
FieldPanel('featured_name'),
]
class FeaturedPages(Orderable, models.Model):
"""
Orderable helper class, and what amounts to a ForeignKey link
to the model we want to add featured pages to (Featured)
"""
featured_page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
featured_item = ParentalKey(
Featured,
related_name='featured_pages',
null=True,
on_delete=models.CASCADE,
)
panels = [
FieldPanel('featured_page'),
]
def __str__(self):
"""String repr of this class."""
return self.featured_page
class Meta: # noqa
verbose_name = "Featured"
verbose_name_plural = "Featured Stories"
admin.py
from .models import *
from wagtail.contrib.modeladmin.options import (ModelAdmin, modeladmin_register,)
class SortingAdmin(ModelAdmin):
model = Featured
menu_lebel= "Sorting"
menu_icon = "placeholder"
menu_order = 290
add_to_settings_menu = False
exclude_from_explorer = False
list_display = ("featured_name","featured_pages")
search_field = ("featured_name","featured_pages")
modeladmin_register(SortingAdmin)
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import FeaturedPages
from .serializers import FeaturedSerializer
class FeaturedList(APIView):
def get(self, request):
featured =FeaturedPages.objects.all()
serializer= FeaturedSerializer(FeaturedPages, many = True)
return Response(serializer.data)
serializers.py
from rest_framework import serializers
from .models import Featured
class FeaturedSerializer(serializers.ModelSerializer):
class Meta:
model = Featured
fields = "__all__" #("featured_name","featured_pages")
urls.py
....
from rest_framework.urlpatterns import format_suffix_patterns
from sorting import views
...
urlpatterns = [
...
path("api/sorting/", views.FeaturedList.as_view()),
]
Ошибка, которую я получаю при получении URL
TypeError at /api/sorting/ 'ModelBase' object is not iterable Request Method: GET Request URL: http://127.0.0.1:8000/api/sorting/ Django Version: 4.0.6 Exception Type: TypeError Exception Value: 'ModelBase' object is not iterable Exception Location: C:\Users\Fathi\Envs\mgolpoenv\lib\site-packages\rest_framework\serializers.py, line 686, in to_representation Python Executable: C:\Users\Fathi\Envs\mgolpoenv\Scripts\python.exe Python Version: 3.10.5
Что я упускаю? И как я могу показать эти поля в API?