0

мне нужна помощь, я использовал 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 объекта.

Как это сделать?

ответ

0

Yay

Я нашел его.

Нам нужно переопределить метод класса сериализатора, затем получить параметры с использованием контекста, исключить нежелательные поля, наконец, вызвать суперкласс.

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) 
Смежные вопросы