django-rest-framework에서 보낸 json 데이터를 db에 저장하려고합니다. 문제는 관계를 저장하지 않고 오류를 반환합니다.관계가있는 ModelSerializer를 저장하는 방법은 무엇입니까? - django
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile', on_delete=models.CASCADE)
name = models.CharField(max_length=30)
family = models.CharField(max_length=50)
class Klass(models.Model):
title = models.CharField(max_length=50)
description = models.CharField(max_length=500)
teacher = models.ForeignKey(Profile, related_name='teacher', on_delete=models.CASCADE)
내가 Klass
모델을 역 직렬화/직렬화 직렬화 아래 사용
벨로우즈 조각 내 모델입니다.
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('pk', 'name', 'family')
class KlassSerializer(serializers.ModelSerializer):
teacher = ProfileSerializer()
class Meta:
model = Klass
fields = ('id', 'title', 'description', 'teacher')
이제 JSON 개체를 준비하고보기로 보내면 오류가 반환됩니다. 아래는 뷰 클래스 :
class KlassView(APIView):
"""for SELECT, INSERT Queries"""
def get(self, request, pk):
# somthing
@csrf_exempt
def post(self,request, pk=None):
"""For Creating A Class"""
serializer = KlassSerializer(data=request.data)
if serializer.is_valid():
teacher = ProfileSerializer(request.data['teacher']['pk'])
serializer.teacher = teacher.data
serializer.save()
return Response({'data': serializer.data})
else:
return Response({'data': serializer.errors})
및 오류는 다음과 같습니다
이
.create()
방법은 기본적으로 쓰기 중첩 된 필드를 지원하지 않습니다. serializermainp.serializers.KlassSerializer
에 대해 명시적인.create()
메서드를 작성하거나 중첩 된 serializer 필드에read_only=True
을 설정하십시오.
DB에 저장하려면 어떻게 관계를 KlassSerializer
에 저장할 수 있습니까?
그냥 KlassSerializer –
에 ModelSerializer의 방법을 만들 오버라이드 (override) 메서드를 재정의하려고했지만 할 수 없습니다. 그것을 쓰는 방법을 보여 주시겠습니까? 감사합니다. – msln