Sto cercando di mettere infinito in un FloatField, ma non sembra funzionare. Come posso risolvere questo?
f = DjangoModel(float_value=float("inf")) #ok
f.save() #crashes
Risultati in:
Traceback (most recent call last):
...
ProgrammingError: column "inf" does not exist
LINE 1: ... "float_value") VALUES (inf)
Sto usando Django 1.0.2 con PostgreSQL 8.3
risposte:
3 per risposta № 1Sembra che Djangos ORM non ne abbiatrattamento speciale per questo. La rappresentazione dei pitoni dei valori è inf e -inf, mentre PostgrSQL richiede "Infinity" e "-Infinity". Ovviamente Djangos ORM non gestisce questa conversione.
Quindi hai bisogno di aggiustare l'ORM, immagino. E poi pensa al fatto che altri database SQL potrebbero volere molto bene altri formati, o non riuscire a gestire gli infiniti.
0 per risposta № 2
Dovrebbe essere "infinito" non dovrebbe? Tuttavia, non so se può essere memorizzato in un campo float. float ("infinity") restituisce inf, e quello sarebbe un campo char.
Modificare: Sfortunatamente, è difficile dire cosa usi la libreria C Django senza scavare in profondità. Direi di capire quale sia il valore memorizzato nel campo float o, almeno, determinare cosa viene restituito.Se effettivamente è "inf", allora non può essere memorizzato correttamente in un campo float.