I ein Django 1.9 queryset qs haben, auf die ich die folgenden Anmerkungen hinzufügen:Django Anmerkungen versehen F()/F() "Runden" unerwartet
qs = qs.annotate(total_messages=
Sum(Case(..., output_field=FloatField()))
qs = qs.annotate(spam_messages=
Sum(Case(..., output_field=FloatField()))
qs = qs.annotate(spam_rate=F('spam_messages')/F('total_messages'))
Weirdly, scheinen die Ergebnisse nach unten gerundet werden (wie Math .floor), so dass ich die folgenden Ergebnisse (Beispiele) erhalten:
total_messages = 40.0, spam_messages = 24.0, spam_rate = 0.0
total_messages = 10.0, spam_messages = 10.0, spam_rate = 1.0
auch könnte es sein, dieses Verhalten nur aufgetreten, nachdem sie von Django 1.7 Upgrade 1.9 Django.
Mache ich etwas falsch oder ist das ein Fehler?
Vielen Dank im Voraus!
Könntest du die ... in deinen 'Case'-Ausdrücken ausdrücken? – lac