2016-08-03 4 views
0

Это возможно? Я хочу сравнить два поля и вернуть результат в поле bet_score.Поле модели Django с функцией

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

Конечно, не автоматом, но зачем вам поле 'bet_score'? Разве функция уже не делает то, что вам нужно? –

+0

Теперь я создаю первую модель, я хочу, чтобы поля bet_score автоматически заполнялись, зависит от score1 и score2. Может быть, мне нужно изменить место для вызова функции bet_score? – Mtzw

+1

Если вам не нужно добавлять поле, вы можете просто использовать функцию. Добавьте dcorator '@ property', чтобы он выглядел как поле:' tablea.bet_score' вместо 'tablea.bet_score()': https://docs.python.org/2/library/functions.html#property –

ответ

0

Если вы хотите сохранить этот вид вещи на модели, я думаю, лучший вариант был бы переопределить метод сохранения:

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) 

Заканчивать the docs для получения дополнительной информации.

+1

Thank вы, он работает – Mtzw

+0

@Mtzw Пожалуйста, отметьте ответ как принято. – denvaar

Смежные вопросы