В ответ на мой предыдущий вопрос у меня есть новый. Как я могу сохранить это вычисленное значение в качестве поля модели. Я хотел бы использовать его в своих представлениях и шаблонах для упорядочения списка по этому полю.
Мои модели:
class Tournament(models.Model):
name = models.CharField(max_length=100)
date = models.DateTimeField('date')
player_num = models.IntegerField(verbose_name="")
points = models.FloatField(default=1000.00)
def get_rating(self):
return self.points / 1000.00
class TournamentStandings(models.Model):
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
player_place = models.FloatField(verbose_name=u"")
player_points = models.FloatField(verbose_name="",
blank=True) #added for testing to save the calculated value in it
@property
def get_player_points(self, obj):
return obj.tournament.player_num * obj.tournament.get_rating() -
obj.tournament.get_rating()*(obj.player_place - 1.00)
def save(self, *args, **kwargs):
self.player_points = self.get_player_points
super(TournamentStandings, self).save(*args, **kwargs)
def __float__(self):
return self.player_points
Забавно, так как в списке администраторов у меня есть столбец, где player_points
вычисляются правильно, но когда я добавляю новый экземпляр модели и пытаюсь его сохранить, я получаю эту ошибку: 'TournamentStandings' object has no attribute 'get_player_points'
. Это потому, что я пытаюсь сделать «самостоятельное» сохранение, и мой расчет (я, объект) ?? Любые подсказки приветствуются.