Ich versuche, eine benutzerdefinierte Serialisierungsmethode zu erstellen, die die Anzahl der bestandenen und fehlgeschlagenen Tests in meinem QuizResults-Modell zählt. Ein fehlgeschlagener Quiz ist unter .7 und ein bestandener Quiz ist .7 oder älter.Django Rest Framework Benutzerdefinierte Serializer-Methode
Ich möchte in der Lage sein, in die Benutzer QuizResult und die Anzahl der bestandenen Tests (.7 oder höher) zu zählen. Ich würde dann die Methode duplizieren, um die fehlgeschlagenen Tests zu zählen (unter .7).
Bisher habe ich nicht viel Ahnung, wie es geht. Ich möchte in der Lage sein, das percent_correct-Feld des Modells zu erfassen und eine Berechnung durchzuführen und sie einem Feld im Serializer namens "quiz_passed" hinzuzufügen.
Hier ist mein QuizResult Modell:
class QuizResult(models.Model):
quiz = models.ForeignKey(Quiz)
user = models.ForeignKey(User, related_name='quiz_parent')
percent_correct = models.FloatField(validators=[MinValueValidator(0.0), MaxValueValidator(1.0)])
date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return 'Quiz Results for : ' + self.quiz.title
Hier ist meine Serializer:
class ProfileSerializer(serializers.HyperlinkedModelSerializer):
todo_count = serializers.IntegerField(source='todo_parent.count', read_only=True)
discussion_count = serializers.IntegerField(source='comment_parent.count', read_only=True)
quiz_passed = serializers.SerializerMethodField()
class Meta:
model = User
fields = ('todo_count', 'discussion_count', 'quiz_passed', 'username',)
def get_quiz_passed(self, obj):
return passed
Jede Hilfe sehr geschätzt wird.
Edit:
I erweitert die User-Modell und hat eine Modell-Methode, wie Sie vorgeschlagen.
class Profile(User):
def get_quizzes_passed_count(self):
return self.quiz_parent.filter(percent_correct__gte=0.8).count()
Ich habe dann Ihren Vorschlag zu meinem ProfileSerializer hinzugefügt.
Leider, wenn ich das hinzufügen, erscheint nichts im Rahmen, sobald diese hinzugefügt wurden Irgendwelche Vorschläge? Vielen Dank.
'return selb.quiz_parent.filter (percent_correct> 0.7) .count()' muss '' sein selbstregeln.quiz_parent.filter (percent_correct__gte = 0.7) .count() ' – Fush
Danke, aktualisiert! – YPCrumble
Ich habe deine Vorschläge angewendet, aber sie haben nicht funktioniert. Kannst du meine Bearbeitung überprüfen? Danke für die Hilfe! – Ryan113