簡體   English   中英

在DRF 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM