Ich benutze 'Django Rest Framework' und ich versuche eine RestfulAPI zu erstellen. Allerdings bekomme ich den obigen Fehler, wenn ich meine App starte: AssertionError: The field 'doctor' was declared on serializer AnimalSerialiser, but has not been included in the 'fields' option.
Ich bin mir nicht sicher, was fields
sind und daher kann das Problem nicht aufspüren.AssertionError: Das Feld '' wurde auf dem Serialiser deklariert '', wurde aber nicht in die Option 'Felder' aufgenommen.
Mein models.py:
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Doctor(models.Model):
id= models.CharField(max_length=10, primary_key=True, unique=True)
name = models.CharField(max_length=20)
def __unicode__(self):
return self.id
class Animal(models.Model):
id = models.CharField(max_length=10, primary_key=True, unique=True)
name = models.CharField(max_length=200)
gender = models.CharField(max_length=10)
breed = models.CharField(max_length=200)
adoption = models.CharField(max_length=10)
vaccines = models.CharField(max_length=20)
doctor = models.ForeignKey(Doctor, null=True)
Mein serialisers.py:
from django.contrib.auth.models import User, Group
from rest_framework import serializers
from models import Animal, Doctor
class DoctorSerealiser(serializers.HyperlinkedModelSerializer):
class Meta:
model = Doctor
fields = ('id' , 'name')
class AnimalSerialiser(serializers.HyperlinkedModelSerializer):
doctor = DoctorSerealiser()
class Meta:
model = Animal
fields = ('id' , 'name' , 'gender' , 'breed' , 'adoption' , 'vaccines', 'Doctor')
Mein views.py:
from django.shortcuts import render
# Create your views here.
from django.contrib.auth.models import User, Group
from rest_framework import viewsets, generics
from cw.myStart.models import Animal
from cw.myStart.serializers import AnimalSerialiser, DoctorSerealiser
from models import Animal, Doctor
class AnimalList(viewsets.ModelViewSet):
queryset = Animal.objects.all()
serializer_class = AnimalSerialiser
class DoctorDetail(viewsets.ModelViewSet):
queryset = Doctor.objects.all()
serializer_class = DoctorSerealiser
Vielen Dank für Ihre Hilfe.
Vielleicht liegt es daran, dass Sie 'Doktor' anstelle von' Doktor' in 'Feldern' verwenden? – v1k45
@ v1k45 danke, das war es – user3395936
auf einer Seitennotiz, verwenden Sie 'Serialisierer',' Serialisierer' und 'Serealiser'. Ich bitte Sie, 'serializer' (die von DRF auferlegte Schreibweise) zu verwenden, um Chaos zu vermeiden. – MariusSiuram