Django Rest_framework“尝试获取字段Process的值时出现AttributeError”

Nic*_*e.P 4 django django-rest-framework

浏览到rest_framework api页面时遇到无法解决的错误。

完整错误(Django错误)为:

 Got AttributeError when attempting to get a value for field `process` on   
 serializer `ResultSerializer`.
 The serializer field might be named incorrectly and not match any attribute     
 or key on the `Shop` instance.
 Original exception text was: 'Shop' object has no attribute 'process'.
Run Code Online (Sandbox Code Playgroud)

似乎序列化程序试图在另一个名为ResultSerializer的序列化程序中给定的字段中获取值,但找不到它。我检查了所有字段,它们都是正确的。

这是我的models.py

from django.db import models

class ResultSet(models.Model):
    process = models.CharField(max_length=10)
    subprocess = models.CharField(max_length=10)

class Shop(models.Model):
    Establishment = models.CharField(max_length=100)
    Address = models.CharField(max_length=100)
    Suburb = models.CharField(max_length=50)
    Postcode = models.CharField(max_length=10)
    State = models.CharField(max_length=5)
    Establishment_Type = models.CharField(max_length=20)
    latitude = models.DecimalField(decimal_places=6, max_digits=12)
    longtitude = models.DecimalField(decimal_places=6, max_digits=12)
    class Meta:
        ordering = ('Establishment',)

class EntirelyResult(models.Model):
    Result = models.ManyToManyField(Shop, related_name='fullresult')
    Status = models.ManyToManyField(ResultSet, related_name='status')
Run Code Online (Sandbox Code Playgroud)

这是我的serializers.py

from rest_framework.serializers import ModelSerializer
from .models import Shop, ResultSet, EntirelyResult

class ResultSerializer(ModelSerializer):
    class Meta:
        model = ResultSet
        fields = ('process', 'subprocess')

class ShopSerializer(ModelSerializer):
   class Meta:
       model = Shop
       fields = ('__all__')

class ShopDetailSerializer(ModelSerializer):
    Result = ResultSerializer(many=True, read_only=True)
    Status = ShopSerializer(many=True, read_only=True)
    class Meta:
        model = EntirelyResult
        fields = ('Result', 'Status')
Run Code Online (Sandbox Code Playgroud)

这是我的views.py

from rest_framework.generics import ListAPIView
from .models import EntirelyResult
from .serializers import ShopDetailSerializer

class ShopDetailAPIView(ListAPIView):
    queryset = EntirelyResult.objects.all()
    serializer_class = ShopDetailSerializer
Run Code Online (Sandbox Code Playgroud)

我有什么想让rest_framework正常的东西吗?

Lin*_*via 7

您在序列化器中遇到错字ShopDetailSerializer应该是:

class ShopDetailSerializer(ModelSerializer):
    Result = ShopSerializer(many=True, read_only=True)
    Status = ResultSerializer(many=True, read_only=True)
Run Code Online (Sandbox Code Playgroud)

编辑:EntirelyResult将Result字段映射到ShopStatus字段,ResultSet而序列化程序最初Result将字段映射到ResultSetStatus字段Shop

  • ho请有人指出我的错字,因为我看不到 (3认同)