Oy verdiğim bir SerializerMethodField, örneğin, vote_count gibi sipariş vermek istediğim bir Forum Konu modelim var.Django Rest Framework Bir SerializerMethodField Üzerine Sipariş Verme
- OrderingFilter varsayılan olarak açıktır ve başarıyla
/topics?ordering=title
- vote_count işlevi sipariş edebilirsiniz: İşte
# models.py class Topic(models.Model): """ An individual discussion post in the forum """ title = models.CharField(max_length=60) def vote_count(self): """ count the votes for the object """ return TopicVote.objects.filter(topic=self).count() # serializers.py class TopicSerializer(serializers.ModelSerializer): vote_count = serializers.SerializerMethodField() def get_vote_count(self, obj): return obj.vote_count() class Meta: model = Topic # views.py class TopicViewSet(TopicMixin, viewsets.ModelViewSet): queryset = Topic.objects.all() serializer_class = TopicSerializer
olanı ise: Burada çok basitleştirilmiş Modeli, seri hale ve ViewSet sorunu göstermek için vardır mükemmel çalışır
TopicSerializer'da MethodField tarafından sipariş vermek istiyorum, 0_gibi desteklenmiyor gibi görünüyor. Bu alandan sipariş verebilmemin bir yolu var mı?
Benim basitleştirilmiş JSON yanıtı şöyle görünür: Ben API tüketmek için Ember kullanıyorum ve ayrıştırıcı CamelCase bunu çeviriyor
{
"id": 1,
"title": "first post",
"voteCount": 1
},
{
"id": 2,
"title": "second post",
"voteCount": 8
},
{
"id": 3,
"title": "third post",
"voteCount": 4
}
. Ben de sipariş = voteCount denedim ama bu işe yaramazsa (ve olmamalıdır)
Harika bir cevap, 2 oy verseydim verebilirdim! Mükemmel bir şekilde çalışıyor ve MethodField'tan kurtulmanın son ipucu için teşekkürler. – awwester