[英]Django Rest Framework - Get related model field in serializer
[英]get_FIELD_serializer in Django Rest Framework
我處於一種要根據條件更改序列化器字段的情況。 條件不重要,但我希望能夠在串行器字段之間進行切換,如下例所示:
class EntrySerializer(serializers.ModelSerializer):
# author defined from ModelSerializer
def get_author_serializer(self):
request = self.context.get('request')
GET = getattr(request, 'GET', {})
if request and GET and GET.get('include_author')=='true':
author_serializer = UserSerializer()
else:
author_serializer = serializers.PrimaryKeyRelatedField(
read_only=True, default=serializers.CurrentUserDefault()
)
return author_serialize
當然,這不起作用,因為get_FIELD_serializer
不存在,但是我正在尋找可以做到這一點的最簡單的解決方案。
我曾嘗試過天真的嘗試將author
寫為財產,但沒有成功。
我知道我可以編寫多個EntrySerializers並使用get_serializer_class
但這對於這么小的定制來說實在太多了。
如果只想根據條件更改序列化器的字段,則可以執行以下操作。
class MySerializer(serializers.ModelSerializer):
author = serializers.SerializerMethodField()
def get_author(self, instance):
# your condition here
if your_condition:
return instance.author
return 'hello'
檢查文檔中的SerializerMethodField
https://www.django-rest-framework.org/api-guide/fields/#serializermethodfield
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.