2017-07-28 8 views
1

Ich versuche, eine Abfrage mit einem Prozentsatz zu kommentieren, der angibt, wie "vollständig" die Geschäftslogik ist. Ich möchte nicht, dass dieser Prozentsatz über 100% steigt. Ich habe dies zur Zeit in meiner Anfrage:Wie kann ich einen CombinedResponse-Objektwert mit einem int vergleichen?

.annotate(completion=max(100, Count('id')/F('something_tricky')) 

Das Problem ist, dass Count/F ein CombinedExpression ist, die unorderable ist, so kann nicht in max verwendet werden. Es wird mich nicht werfen lassen Sie es zu einem int entweder:

int() Argument muss eine Zeichenkette sein, ein Byte-ähnliches Objekt oder eine Nummer, nicht ‚CombinedExpression‘

Oder ein Zeichenfolge.

Wie bekomme ich den Wert completion als int aus dieser Abfrage?

+0

Haben Sie 'output_field' versucht? –

+0

Entschuldigung, ich meine 'convert_value' –

Antwort

1

Sie müssen Datenbankfunktionen für Anmerkungen verwenden, in Ihrem Fall ist Greatest Funktion.

from django.db.models import Value 
from django.db.models.functions import Greatest 

.annotate(completion=Greatest(Value(100), Count('id')/F('something_tricky')) 
Verwandte Themen