Tôi muốn serialize một mô hình, nhưng muốn bao gồm một trường bổ sung mà đòi hỏi phải thực hiện một số tra cứu cơ sở dữ liệu về các trường hợp mô hình để được tuần tự:Django REST của khung: thêm trường bổ sung để ModelSerializer
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
là gì đúng cách để làm điều này? Tôi thấy rằng you can pass in extra "context" đến serializer, là câu trả lời đúng để vượt qua trong lĩnh vực bổ sung trong một từ điển ngữ cảnh? Với cách tiếp cận đó, logic của việc nhận được trường tôi cần sẽ không được khép kín với định nghĩa serializer, điều này lý tưởng vì mọi trường hợp được tuần tự hóa sẽ cần my_field
. Ở những nơi khác trong tài liệu tuần tự DRF tài liệu nó says "trường bổ sung có thể tương ứng với bất kỳ tài sản hoặc có thể gọi trên mô hình". Có phải những lĩnh vực phụ mà tôi đang nói đến không? Tôi có nên định nghĩa một hàm trong định nghĩa mô hình của Foo
trả về giá trị my_field
và trong bộ nối tiếp tôi kết nối my_field với hàm đó có thể gọi được không? Điều đó giống như thế nào?
Xin cảm ơn trước, vui lòng làm rõ câu hỏi nếu cần.
+1, Điều đó cũng có hiệu quả đối với Trình tùy chỉnh không? –
có thể thêm xác thực vào các trường như vậy không? câu hỏi của tôi là: làm thế nào để chấp nhận các giá trị POST tùy chỉnh có thể được xác nhận và xử lý trong trình xử lý post_save()? – Alp
Lưu ý rằng SerializerMethodField là chỉ đọc, do đó, điều này sẽ không hoạt động cho POST/PUT/PATCH. –