나머지 프레임 워크 직렬화 :장고 나는이처럼 보이는 장고 모델이 오류
이from studentapp.models import AcademicPrograms, AcademicProgramsManager, StudentAcademicPrograms
from rest_framework import serializers
class StudentAcademicProgramsSerializer(serializers.ModelSerializer):
class Meta:
model = StudentAcademicPrograms
fields = ('credits_completed','academic_program_gpa','primary_program')
class AcademicProgramsSerializer(serializers.ModelSerializer):
studentacademicprograms = StudentAcademicProgramsSerializer(many = True)
class Meta:
model = AcademicPrograms
fields = ('acad_program_id','program_title','required_credits','studentacademicprograms')
내 api.py 파일은 다음과 같습니다 :
이 내 serializers.py 파일이class AcademicProgramsManager(models.Manager):
def get_by_natural_key(self, acad_program_id, program_title, required_credits):
return self.get(acad_program_id = acad_program_id, program_title = program_title, required_credits = required_credits)
class AcademicPrograms(models.Model):
objects = AcademicProgramsManager()
acad_program_id = models.IntegerField(primary_key=True)
acad_program_category = models.ForeignKey(AcademicProgramCategories)
acad_program_type = models.ForeignKey(AcademicProgramTypes)
acad_program_code = models.CharField(max_length=25)
program_title = models.CharField(max_length=64)
required_credits = models.IntegerField()
min_gpa = models.FloatField()
description = models.CharField(max_length=1000)
def natural_key(self):
return (self.acad_program_id, self.program_title, self.required_credits)
class StudentAcademicPrograms(models.Model):
student = models.ForeignKey(Students)
academic_program = models.ForeignKey(AcademicPrograms)
credits_completed = models.IntegerField()
academic_program_gpa = models.FloatField()
primary_program = models.BooleanField()
입니다
from studentapp.models import AcademicPrograms, AcademicProgramsManager, StudentAcademicPrograms
from studentapp.serializers import StudentAcademicProgramsSerializer, AcademicProgramsSerializer
from django.http import Http404
from rest_framework.views import APIView
from rest_framework.response import Response
class AcademicProgramsList(APIView):
def get(self, request, format=None):
academicprograms = AcademicPrograms.objects.all()
serialized_academicprograms = AcademicProgramsSerializer(academicprograms, many=True)
return Response(serialized_academicprograms.data)
class AcademicProgramsDetail(APIView):
def get_onjects(self, pk):
try:
return AcademicPrograms.object.get(pk=pk)
except AcademicPrograms.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
academicprogram = self.get_object(pk)
serialized_academicprogram = AcademicProgramsSerializer(academicprogram)
return Response(serialized_academicprogram.data)
그리고 마지막으로 내 URL을 :
난 내 API를 줄 때나는 어디에서 잘못 가고
'AcademicPrograms' object has no attribute 'studentacademicprograms'
studentacademicprograms/다음과 같은 오류는 무엇입니까?
'장고 - 나머지 프레임 워크'에 익숙하지 않지만 그 문서를 보면'AcademicProgramsSerializer.Meta.fields' 목록에'studentacademicprograms'을 포함해서는 안된다 - 그 필드 목록 만 serialize 할 모델의 실제 필드를 지정하지만'studentacademicprograms'는'AcademicPrograms' 모델의 필드가 아닙니다. – lanzz
이 문서의 중첩 된 관계를 따르고있었습니다. 심지어 그들은 나를 혼란스럽게했던 것과 같은 방식으로 사용했습니다. http://www.django-rest-framework.org/api-guide/relations – Abhishek
예제가 시나리오에 맞지 않습니다. 모델에 실제로 직렬화를 위해 설정 한 필드가 있습니다. – lanzz