Trong khung công tác REST Django, những gì có liên quan trong việc tạo ra một biểu diễn nối tiếp phẳng, đọc-ghi? Các tài liệu đề cập đến một 'đại diện phẳng' (kết thúc của phần http://django-rest-framework.org/api-guide/serializers.html#dealing-with-nested-objects) nhưng không cung cấp các ví dụ hoặc bất cứ điều gì ngoài một đề nghị để sử dụng một lớp con RelatedField
.Khuôn khổ Django REST phẳng, đọc-ghi serializer
Ví dụ: cách cung cấp đại diện phẳng cho mối quan hệ User
và UserProfile
, bên dưới?
# Model
class UserProfile(models.Model):
user = models.OneToOneField(User)
favourite_number = models.IntegerField()
# Serializer
class UserProfileSerializer(serializers.ModelSerializer):
email = serialisers.EmailField(source='user.email')
class Meta:
model = UserProfile
fields = ['id', 'favourite_number', 'email',]
Trên đây UserProfileSerializer
không cho phép bằng văn bản cho lĩnh vực email
, nhưng tôi hy vọng nó thể hiện ý định đủ tốt. Vì vậy, làm thế nào nên một "phẳng" đọc-ghi serializer được xây dựng để cho phép một thuộc tính email
ghi trên UserProfileSerializer
? Có thể làm điều này khi subclassing ModelSerializer?
Cảm ơn.
Paul, là request.DATA của bạn ở đây một mảng lồng nhau JSON duy nhất, hoặc bạn có một cho mỗi mô hình trong yêu cầu POST? (Đang cố gắng để đạt được một cái gì đó tương tự) – jvc26
@ jvc26, ví dụ của tôi ở trên sẽ sử dụng một đối tượng JSON gốc duy nhất trong 'request.DATA'. 'request.DATA' sẽ trông giống như sau: ' {'id': '1', 'favourite_number': '2', 'email': '[email protected]'} ' Theo như khách hàng có liên quan, đối tượng JSON đó đại diện cho một cá thể mô hình duy nhất và sẽ không có kiến thức về hai mô hình ('User' và' UserProfile') mà nó thực sự phân chia thành trên máy chủ. 'UserSerializer' và' UserProfileSerializer' được sử dụng để trích xuất, xác thực và lưu nội dung từ request.DATA cho các mô hình liên quan của chúng. –