0
votes

Comment ajouter un champ supplémentaire dans le sérialisateur de Django Repose-cadre Get retour

Je veux ajouter des statistiques supplémentaires à un sérialiseur de travail pour le cadre de repos Django: Si je reçois une demande d'obtention de plusieurs cas, je souhaite retourner non seulement les cas, mais une statistique sur les cas correspondant à la demande (sans la pagination):

Demande: P>

class CaseSerializer(serializers.ModelSerializer):

    class Meta:
        model = Case
        fields = "__all__"

    def update(self, instance, validated_data):
        ...



    def create(self, validated_data):
        ...


0 commentaires

3 Réponses :


2
votes

Vous pouvez utiliser la pagination personnalisée xxx

puis ajouter cette classe à votre vue: xxx

Pour plus d'informations, voir styles personnalisés-pagination . < / p>


2 commentaires

J'aime vraiment votre approche. Ce qui me manque, c'est l'accès aux objets Django dans def get_paginé_response, car je dois toujours calculer les statistiques et cela est difficile avec l'objet de données déjà sérialisé.


Vous pouvez modifier votre cours de sérialisation. J'écris une autre réponse



0
votes

Ceci est juste un concept. Vous devez modifier ce code comme vous le souhaitez

class Ser1(serializers.ModelSerializer):
    class Meta:
        model = Stats
        fields = ('age_mean', 'age_sd',)


class Ser2(serializers.ModelSerializer):
    class Meta:
        model = Case
        fields = ('__all__')


class MainSer(serializers.Serializer):
    ser1 = Ser1()
    ser2 = Ser2(many=True)
    class Meta:
        fields = ('ser1', 'ser2',)


0 commentaires

1
votes

Réponse mise à jour

Ce que vous pouvez faire ici est de remplacer votre méthode listApiVievis.list et injecter vos données dans facilement xxx

Réponse Updater: J'ai ajouté la logique pour calculer la moyenne de tous les résultats filtrés (non claqué) uniquement contre le nombre de comptes de tous les enregistrements.


3 commentaires

J'ai toujours un problème avec cette implémentation: auto.Quiseryset retourne malheureusement tous les cas et non les filtrages. Comment puis-je interroger les cas filtrés?


C'est vraiment simple à faire, donnez-moi juste une minute pour mettre à jour la réponse


@ Gurkenkönig vérifier maintenant, je pense que cela pourrait aider