특정 json 입력에 대해 django-rest-framework을 사용하여 API 끝점을 만듭니다.django rest framework 중첩 된 객체가 동작을 만들거나 생성합니다.
class Category(models.Model):
name = models.CharField(max_length=10)
slug = models.SlugField()
class Post(models.Model):
category = models.ForeignKey()
title = models.CharField(max_length=100)
text = models.CharField(max_length=256)
을 내 시리얼 라이저는 간단한 모델의 시리얼입니다 : 내가 지금과 같은 두 개의 관련된 모델을 가지고 (의 단 하나 개의 카테고리를 가질 수 있습니다 후 가정하자)
class CategorySerializer(ModelSerializer):
id = serializers.IntegerField(required=True)
class Meta:
model = Category
class PostSerializer(ModelSerializer):
id = serializers.IntegerField(required=True)
category = CategorySerializer()
class Meta:
model = Post
내 API를보기도 매우 간단하다 :
{
"id": 10,
"pk": 10
"title": "Some title",
"text": "Some text",
"category": {
"id": 15,
"pk": 15
"name": "Best category",
"slug": "best-category"
}
}
:
class PostAPIView(mixins.CreateModelMixin, GenericAPIView):
serializer_class = PostSerializer
permission_classes = (IsAuthenticated,)
이제 게시물을 작성하기 위해 나는이 같은 JSON 입력을 구문 분석 할 필요가
여기서 'pk'매개 변수가 중요하기 때문에 json에서 제공하는 정확한 pk를 사용하여 db에 데이터를 만들길 원합니다. 이제 게시물 요청을하면 ID가 10 인 게시물이 있고 id가 15 인 카테고리는 모두 정상이며 db에 새 레코드가 기록됩니다.하지만 rest-framework에서 [ 'Post id 10 already exists'], 일치하는 레코드를 대신 입력에 따라 업데이트하고 싶습니다. 어떻게해야합니까?
만약 put/patch를 추가하면 나머지 프레임 워크는 look_up 필드와 모델을 필요로합니다.이 입력으로 여러 모델로 작업하고 있기 때문에 제공 할 수 없습니다. – balkan