私は 'Django Rest Framework'を使用していますが、RestfulAPIを構築しようとしています。しかし、私は私のアプリを実行すると上記のエラーが発生します。AssertionError: The field 'doctor' was declared on serializer AnimalSerialiser, but has not been included in the 'fields' option.
私はfields
が何であるか分かりませんので、問題を追跡できません。AssertionError:フィールド ''がシリアライザで宣言されましたが、 'fields'オプションに含まれていません。
マイ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)
マイ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')
私の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
感謝。
おそらく、 'fields'に' doctor'の代わりに 'Doctor'を使用しているからでしょうか? – v1k45
@ v1k45お返事ありがとうございました、それは – user3395936
です。あなたは 'serializer'、' serialiser'と 'serealiser'を使用しています。私はあなたに混乱を避けるために 'シリアライザ'(DRFによって "課された"という綴り)を使うように頼んでいます。 – MariusSiuram