Mam następujący Serializer za pomocą Django REST Framework.Rest Framework Serializer Method
To, co mam tak daleko ...
serializer.py
class ProductSerializer(serializers.ModelSerializer):
score = serializers.SerializerMethodField('get_this_score')
class Meta:
model = Product
fields = ('id', 'title', 'active', 'score')
def get_this_score(self, obj):
profile = Profile.objects.get(pk=19)
score = [val for val in obj.attribute_answers.all() if val in profile.attribute_answers.all()]
return (len(score))
urls.py
url(r'^products/(?P<profile_id>.+)/$', ProductListScore.as_view(), name='product-list-score'),
Istnieje kilka problemów z tym fragmencie kodu.
1) Wózek pk = 19 jest zakodowany powinien być self.kwargs['profile_id'].
Próbowałem i próbowałem, ale nie wiem, jak przekazać kwarg do metody i nie mogę uzyskać właściwości profile_id do pracy. tj. nie mogę uzyskać tego z adresu URL.
2) Czy którykolwiek z tych kodów powinien być w modelach? Próbowałem dodawać do modeli, ale znowu mogę przekazać argumenty.
models.py czyli klasa metoda
def get_score(self, profile):
score = [val for val in self.attribute_answers.all() if val in
profile.attribute_answers.all()]
return len(score)
Podoba mi się pomysł posiadania tego w modelach. ale SerializerMethodField za pomocą source = nie pozwala mi przekazać parm. czy mógłbyś mi podać przykład użycia SerializerMethodField i przekazywania args żądania oraz obiektu do metody modelu? to naprawdę pomogłoby mi zrozumieć. Dzięki Ci. – jason
Dołączam do pytania @jason –
w 'Jednak w tym przypadku nie myślę, że musisz to zrobić, ponieważ 'obj' będzie w każdym razie ustawione na instancję profilu 'masz na myśli przykład' Product'? – Pynchia