Tôi muốn có một đối tượng lồng nhau bên trong một serializer thay vì chỉ là nước ngoài (hoặc url). Như this documentation nói, tôi chỉ phải xác định lớp serializer của đối tượng lồng nhau trong serializer mẹ:Django-phần còn lại-khung, đối tượng lồng nhau trong Serializers
# Models
class NestedSample(models.Model):
something = models.CharField(max_length=255)
class Sample(models.Model):
thing = models.BooleanField()
nested = models.ForeignKey(NestedSample)
# Serializers
class NestedSampleSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = api_models.NestedSample
class SampleSerializer(serializers.HyperlinkedModelSerializer):
nested = NestedSampleSerializer() # HERE!
class Meta:
model = api_models.Sample
# Views
class NestedSampleViewSet(viewsets.ModelViewSet):
queryset = api_models.NestedSample.objects.all()
serializer_class = api_serializers.NestedSampleSerializer
class SampleViewSet(viewsets.ModelViewSet):
queryset = api_models.Sample.objects.all()
serializer_class = api_serializers.SampleSerializer
này hoạt động rất tốt khi tôi nhận được các đối tượng, nhưng nó không phải là có thể tạo ra (= POST
) Sample
đối tượng nữa, tôi nhận được lỗi:
{u'non_field_errors': [u'Invalid data']}
tôi cố gắng để ghi đè lên các phương pháp create
trong viewset để có được những đối tượng sử dụng pk:
class SampleViewSet(viewsets.ModelViewSet):
queryset = api_models.Sample.objects.all()
serializer_class = api_serializers.SampleSerializer
def create(self, request):
request.DATA['nested'] = get_object_or_404(api_models.NestedSample, pk=request.DATA['nested'])
return super(SampleViewSet, self).create(request)
Nhưng nó cũng không hoạt động.
Bất kỳ ý tưởng nào?
Tôi cũng tìm thấy this question Tôi có thể liên hệ với khóa học nào giải quyết vấn đề nhưng không để tôi phơi bày đối tượng lồng nhau đầy đủ, vì vậy hãy quay lại phần đầu.
Xin cảm ơn,
Bạn không cần phải ghi đè 'tạo' để điền dữ liệu yêu cầu của bạn bằng một ví dụ NestedSample, chuỗi PK sẽ hoạt động một mình. – Fiver
Xem câu trả lời này: http://stackoverflow.com/questions/23686888/how-to-implement-nested-models-routes/23696134#23696134 – YAtOff