2014-07-17 15 views
5

Tôi có một phương pháp mô hình đó đòi hỏi người sử dụng yêu cầu phải vượt qua trong khi một cuộc tranh cãi thêm:Django Nghỉ ngơi Khung SerializerMethodField đèo tắm Luận

mẫu Phương pháp:

def has_achieved(self, user): 
    return AwardLog.objects.filter(user=user, badge=self).count() > 0 

Sử dụng các phần còn lại khung Django Tôi muốn gọi điều này là không biết cách vượt qua đối số thừa từ Trình nối tiếp:

class BadgeSerializer(serializers.ModelSerializer): 

    achieved = serializers.SerializerMethodField(source='has_achieved(request.user???)') 

    class Meta: 
     model = Badge 
     fields = ("name", "achieved") 

Tôi không thể tìm thấy nywhere kịch bản này đã được ghi nhận. có một phương pháp trong quan điểm của tôi tôi có thể ghi đè để vượt qua điều này và sử dụng? Cảm ơn.

Trả lời

11

Chỉ cần theo dõi tôi đã thực hiện bằng cách sử dụng self.context['request'].user tức là.

def has_achieved(self, obj): 

    return obj.has_achieved(self.context['request'].user) 
+0

Đó là cách để đi :) –

Các vấn đề liên quan