2016-11-29 6 views
5

Мне нужно добавить статическое поле в свой сериализатор. Он всегда должен возвращать одно и то же значение независимо от переданного объекта. В настоящее время я реализовал это так:django rest framework - как добавить значение статического поля для сериализатора

class QuestionSerializer(serializers.ModelSerializer): 
    type = serializers.SerializerMethodField() 

    @staticmethod 
    def get_type(obj): 
     return 'question' 

    class Meta: 
     model = Question 
     fields = ('type',) 

Но есть более простой способ сделать это, без SerializerMethodField?

+0

Я думаю, что это правильный способ сделать это. Я не знаю лучшего способа. – davyria

ответ

2

Единственной альтернативой было бы переопределить to_representation и добавить значение здесь:

def to_representation(self, obj): 
    data = super().to_representation(obj) 
    data['type'] = 'question' 
    return data 

Не намного лучший вариант, хотя.

0

Если вам не нужно добавлять строку к вашей модели, было бы проще добавить статическое поле в вашу модель.

class Question(models.Model): 
    type = 'question' 

class QuestionSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Question 
     fields = ('type',) 
Смежные вопросы