Django Sie ein benutzerdefiniertes Modell erstellen-Feld

Ich versuche, erstellen Sie ein benutzerdefiniertes Feld in Django, die eine dezimale Währung Wert (Beispiel: £1.56) und speichern es in der Datenbank als Integer (Beispiel: 156) zum speichern der Währung Werte.

Dies ist, was ich habe, so weit (ich habe Feste Werte zu testen)

class CurrencyField(models.DecimalField):
    __metaclass__ = models.SubfieldBase

    def get_internal_type(self):
        return 'PositiveIntegerField'

    def to_python(self, value):   
        print "CurrentField to_python"

        return Decimal(value)/100

    def get_db_prep_value(self, value, connection, prepared=False):
        print "CurrentField get_db_prep_value"
        if value is None:
            return value

        print type(value)

        return int(value*100)

Ich bin nach dem Python-1.7 Dokumentation für die Erstellung eigener Felder-Modell.

In dem obigen code, die get_db_prep_value - Methode wird nie aufgerufen, wenn ich das Modell speichern mit Hilfe dieses Feldes. Die to_python Methode funktioniert gut (wenn ich Sie manuell geben Sie den Wert in der DB wird es wieder die richtigen dezimal), aber es wird nie " den richtigen Wert.

Habe ich auch versucht, mit Hilfe get_prep_value und das Ergebnis ist das gleiche.

Wie kann ich es machen das sparen der richtige Wert?

InformationsquelleAutor LondonAppDev | 2015-02-15
Schreibe einen Kommentar