Поля администратора модели Django/Wagtail не отображаются в API
Я использую wagtail и у меня есть ModelAdmin под названием sorting
. У меня есть PageChooserPanel
внутри ModelAdmin. Я отобразил их в API, но он показывает только id таблицы, но не показывает полную информацию. Но в моей базе данных я могу просмотреть их.
Снимок экрана модели
Вот моя views.py
class FeaturedList(APIView):
def get(self, request):
featured =Featured.objects.all()
serializer= FeaturedSerializer(featured, many = True)
return Response(serializer.data)
serializers.py
class FeaturedSerializer(serializers.ModelSerializer):
class Meta:
model = Featured
fields = ("featured_name","featured_pages",)
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)
Мне пришлось немного изменить в моем serializers.py
файле
from rest_framework import serializers
from .models import Featured, FeaturedPages
class FeaturedSerializer(serializers.ModelSerializer):
class Meta:
model = FeaturedPages
fields = ("featured_item","sort_order","featured_page",)
views.py
class FeaturedList(APIView):
def get(self, request):
featured =FeaturedPages.objects.all()
serializer= FeaturedSerializer(featured, many = True)
return Response(serializer.data)
Теперь все идет так же, как и в DB.