![](/img/trans.png)
[英]DRF: Which if better to create custom structure of response in Serializer/ModelSerializer?
[英]Generate custom response in DRF ModelSerializer
我需要一些幫助,我在DRF
使用過ModelSerializer
,這是問題所在:
我想動態生成響應,這意味着我要決定用戶的輸入,因此我需要將請求參數傳遞給ModelSerializer
,然后確定是否滿足條件,生成字段,否則生成其他字段。
像這樣:
class AlbumSerializer(serializers.ModelSerializer):
class Meta:
model = Album
if request.SOME_CONDITION:
fields = ('id', 'name_fa', 'name_en', 'price')
else:
fields = ('description', 'image_path_absolute', 'publisher')
我已經搜索過,並且可以將使用context
參數傳遞給序列化器,但是在序列化器中,我需要通過self
對象獲取參數。
我怎樣才能做到這一點?
好極了
我找到了。
我們需要重寫序列化器類的__init__()
方法,然后使用上下文獲取參數,排除不需要的字段,最后調用超類。
def __init__(self, *args, **kwargs):
if 'context' in kwargs:
context = kwargs.get('context')
if 'user' in context:
if SOME_CONDITION:
super(AlbumSerializer, self).__init__(*args, **kwargs)
self.fields.pop(key)
pass
super(AlbumSerializer, self).__init__(*args, **kwargs)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.