2016-04-16 7 views
0

Ich möchte ein Feld, das ein Ergebnis der Division zwei int-Variablen ist, in meiner Django-Admin-Liste anzeigen. Ich erwarte float digit wie 0.95, aber ich habe 0, zum Beispiel. Warum?Warum ist eine float-Zahl gerundet in django list_display

My Model:

class Flat(models.Model): 
    flat_price = models.PositiveIntegerField(verbose_name='Цена квартиры') 
    flat_prediction_price = models.PositiveIntegerField(verbose_name='Прогноз') 

    def show_price(self): 
     return unicode(self.flat_price) + u" тыс. руб." 

    def show_accuracy(self): 
     if self.flat_prediction_price is None: 
      return float(999) 
     else: 
      result = self.flat_price/self.flat_prediction_price     return round(result, 2) 

und Admin:

class FlatAdmin(admin.ModelAdmin): 
    model = Flat 
    inlines = [NeedInline] 
    list_display = ('show_price','show_accuracy') 
+1

Versuchen Sie 'result = float (self.flat_price)/self.flat_prediction_price' – Selcuk

Antwort

1

Wie Selchuk erwähnt, wenn Sie float(self.flat_price)/self.flat_prediction_price tun, dass Sie das schwebte Ergebnis zurückkehren (und Sie können rund um von dort).

Was mit dem passiert, was Sie gerade tun, ist, dass Sie ein int durch ein int teilen, was Ihnen ein int-Ergebnis gibt. Sie runden dann ab, nachdem Sie das int-Ergebnis erhalten haben, das nicht das Ergebnis Ihrer Runde ist, da es bereits 0 ist. Wenn Sie einen Gleitkommawert nach int tauchen (oder beide in Gleitkommawerte umwandeln können), erhalten Sie ein Gleitkomma-Ergebnis zurück und können dieses Ergebnis runden.