Estoy tratando de implementar la API de descanso utilizando el marco de Django. Pero cuando haga clic en la URL en la página de índice predeterminado, me da un error de aserción en / Idiomas / class IdongesSerializer que falta Meta.Model Attribute

Hice todas las migraciones después de los cambios en los modelos.py, pero no hizo nada.

Urls.py

from django.urls import path, include
from . import views
from rest_framework import routers

router = routers.DefaultRouter()
router.register('languages', views.LanguageView)

urlpatterns = [
    path('', include(router.urls))
]

Models.py

from django.db import models

class Language(models.Model):
    name = models.CharField(max_length=50)
    paradigm = models.CharField(max_length=50)

Serializers.py

from rest_framework import serializers
from .models import Language

class LanguageSerializer(serializers.ModelSerializer):
    class Meta:
        fields = ('id', 'name', 'paradigm')

Views.py

from django.shortcuts import render
from rest_framework import viewsets
from .models import Language
from .serializers import LanguageSerializer

class LanguageView(viewsets.ModelViewSet):
    queryset = Language.objects.all()
    serializer_class = LanguageSerializer

No tengo ni idea de donde voy mal

1
Nishad 13 jul. 2019 a las 17:16

1 respuesta

La mejor respuesta

Debe especificar qué modelo desea serializar en la clase Meta de su serializador, como:

from rest_framework import serializers
from .models import Language

class LanguageSerializer(serializers.ModelSerializer):

    class Meta:
        model = Language  # specify the model
        fields = ('id', 'name', 'paradigm')

De lo contrario, el serializador no puede determinar los campos de ese modelo, y cómo serializará los datos de estos campos.

3
Willem Van Onsem 13 jul. 2019 a las 14:17