[Django Rest Framework]: Serializacja listy list
Pracuję z frameworkami django i django rest
Stworzyłem nowe miejsce docelowe
MedginalApps. Po uruchomieniu
GetŻądania dla niego, chcę zwrócić dane zawarte jako lista ciągów (lista zainstalowanych aplikacji)
Lista linii wygląda tak:
<pre class="lang-python prettyprint-override">
installed_apps = ['django_admin_bootstrapped', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.humanize', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_js_reverse', 'djcelery', 'bootstrap3', 'foo', 'bar', 'apirest']
Do tej pory pracowałem tylko z modecznymi serializatorami i wszystko było dość proste. Ale teraz nie wiem, jak zwrócić tę listę linii
Oto, czego próbowałem do tej pory:
<pre class="lang-python prettyprint-override">
class InstalledAppsViewSet(viewsets.ViewSet):
serializer_class = serializers.InstalledAppsSerializer def list(self, request):
from credits.views import GetInstalledApps installed_apps = GetInstalledApps.get_installed_apps() serializer = serializers.InstalledAppsSerializer( instance=installed_apps, many=True) return Response(serializer.data)
class InstalledAppsSerializer(serializers.ListField): name = serializers.CharField(max_length=256) child = serializers.CharField() installed_apps_field = serializers.SerializerMethodField( 'get_installed_apps')
Zawsze dostaję różnego rodzaju błędy. Czy jest jakaś pomoc, jak odzyskać zawartość listy ciągów?
Aktualizacja
Wypróbowałem kod @ e4c5, zostawiając to tak:
<pre class="lang-python prettyprint-override">
class InstalledAppsViewSet(viewsets.ViewSet):
serializer_class = serializers.InstalledAppsSerializer def list(self, request): serializer = serializers.InstalledAppsSerializer
class InstalledAppsSerializer(serializers.Serializer): name = serializers.CharField(max_length=256) child = serializers.CharField() installed_apps = serializers.SerializerMethodField('get_the_installed_apps')
def get_the_installed_apps(self):
from credits.views import GetInstalledApps
installed_apps = GetInstalledApps.get_installed_apps() return installed_apps
I nadal dostaję błędy. Ale nigdzie nie otrzymam komunikatów o błędach. Czy ktoś pomaga?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
3 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
,
ListField to klasa pola, która weryfikuje listę obiektów.
Klasa ListField obsługuje również styl deklaratywny, który umożliwia pisanie klas pól list wielokrotnego użytku.
Możesz napisać niestandardowe pole dla serializatora dziedziczenia z Drf Serializers Form, który akceptuje listę wierszy. Być może to jest, ten przykład jest już pokazany w dokumentach DRF.
Teraz możemy ponownie skorzystać z naszego klasa użytkownika Stringlistfield w całej naszej aplikacji, nie dając jej argumentowi dziecka.
To jest z dokumentów, jeszcze tego nie próbowałem. Ale mam nadzieję, że dostaniesz to, czego szukasz.
Możesz na przykład użyć niestandardowego pola w swoim serializatorze
Anonimowy użytkownik
Potwierdzenie od:
ListField
http://www.django-rest-framewo ... Klasa pola, która weryfikuje listę obiektów.
Możesz go użyć, gdy jeden z członków twojej klasy jest listą. Ale nie chcesz używać ListField jako serializatora, ponieważ tak nie jest
Anonimowy użytkownik
Potwierdzenie od:
I nadal dostaję błędy. Ale nigdzie nie otrzymam komunikatów o błędach .
Część pytania: Błąd powinien być w odpowiedziach, który otrzymasz od widoku po wysłaniu żądania.
Jeśli masz coś takiego:
,
Aby wydrukować zawartość odpowiedzi:
- błąd powinien tam być.