2016-08-03 9 views
0

Es ist möglich? Ich möchte zwei Felder vergleichen und das Ergebnis in das Feld bet_score zurückgeben.Django Modellfeld mit Funktion

class Tabela(models.Model): 
    score1= models.IntegerField(max_length=3) 
    score2 = models.IntegerField(max_lenght=3) 
    bet_score= models.IntegerField(defaults=bet_score()) 


    def bet_score(self): 
     if (self.score1> self.score2): 
      return 1 
     elif (self.score1== self.score2): 
      return 0 
     else: 
      return 2 
+1

Natürlich nicht automatisch, aber warum brauchen Sie dann ein Feld 'bet_score'? Funktioniert die Funktion nicht schon, was Sie brauchen? –

+0

Jetzt erstelle ich das erste Modell, ich wünsche, dass bet_score Felder automatisch ausfüllen abhängig von score1 und score2. Vielleicht sollte ich den Ort wechseln, um die Funktion bet_score aufzurufen? – Mtzw

+1

Wenn Sie kein Feld hinzufügen müssen, können Sie einfach eine Funktion verwenden. Fügen Sie den dcoorator '@ property' hinzu, damit es wie ein Feld aussieht:' tablea.bet_score' statt 'tablea.bet_score()': https://docs.python.org/2/library/functions.html#property –

Antwort

0

Wenn Sie auf einem Modell diese Art der Sache speichern wollen, glaube ich, die beste Option, um die Speichermethode außer Kraft zu setzen wäre:

class Tabela(models.Model): 
    score1= models.IntegerField(max_length=3) 
    score2 = models.IntegerField(max_lenght=3) 
    bet_score= models.IntegerField() 

    def save(self, *args, **kwargs): 
     if (self.score1 > self.score2): 
      self.bet_score = 1 
     elif (self.score1 == self.score2): 
      self.bet_score = 0 
     else: 
      self.bet_score = 2 
     super(Tabela, self).save(*args, **kwargs) 

prüfen the docs out für weitere Informationen.

+1

Vielen Dank Sie, es funktioniert – Mtzw

+0

@Mtzw Bitte markieren Sie die Antwort als akzeptiert. – denvaar

Verwandte Themen