AssertionError: 字段“ ”已在序列化程序“ ”上声明,但尚未包含在“字段”选项中

新手上路,请多包涵

我正在使用“Django Rest Framework”并且正在尝试构建一个 RestfulAPI。但是,当我运行我的应用程序时出现上述错误: AssertionError: The field 'doctor' was declared on serializer AnimalSerialiser, but has not been included in the 'fields' option. 我不确定 fields 是什么,因此无法追踪问题。

我的模型.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')

我的观点.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

原文由 user3395936 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您需要将 doctor 字段名称修改为正确的大小写:

 fields = ('id' , 'name' , 'gender' , 'breed' , 'adoption' , 'vaccines', 'doctor')

Doctor 目前是错误的大写。

原文由 rnevius 发布,翻译遵循 CC BY-SA 3.0 许可协议

上面的答案已经解决了这个特定问题。对我来说,我看到这个错误是出于完全不同的原因,我在 fields 中的一个属性列表之后缺少一个逗号 id ,所以我得到了关于 name

 class SomeSerializer(serializers.ModelSerializer):
    class Meta:
        model = SomeModel
        fields = (
                  'id' # missed a comma here
                  'name'
                 )

原文由 Ash Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题