2016-11-29 18 views
5

Tôi cần thêm trường tĩnh vào bộ nối tiếp của mình. Nó sẽ luôn luôn trả về cùng một giá trị, bất kể đối tượng đã truyền. Hiện tại tôi đã triển khai nó như vậy:khung làm việc django còn lại - cách thêm giá trị trường tĩnh cho bộ nối tiếp

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

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

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

Nhưng có cách nào đơn giản hơn để làm điều đó, mà không cần SerializerMethodField?

+0

Tôi nghĩ đây là cách chính xác để thực hiện. Tôi không biết cách nào tốt hơn. – davyria

Trả lời

2

Lựa chọn duy nhất sẽ được ghi đè to_representation và thêm giá trị đó:

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

Không phải là một lựa chọn tốt hơn nhiều mặc dù.

0

Nếu bạn không quan tâm đến việc thêm một dòng vào mô hình của mình, sẽ dễ dàng thêm trường tĩnh vào mô hình của bạn.

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

class QuestionSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Question 
     fields = ('type',) 
Các vấn đề liên quan