У меня есть следующие модели:как заказать по модельной функции в Джанго
class Player(models.Model):
user = models.OneToOneField(User, related_name="player")
first_name = models.CharField(max_length=128)
last_name = models.CharField(max_length=128)
def point_total(self):
playerAchievements = PlayerAchievement.objects.filter(player=self)
score = 0
for p in playerAchievements:
score += p.achievement.value
return score
def full_name(self):
return self.first_name + ' ' + self.last_name
def rank(self):
print '---'
players = Player.objects.filter(team__league=self.team.league).order_by(self.point_total())
print self.first_name
position = 0
for p in players:
position +=1
if p.id == self.id:
return str(position)
return '0'
Ничто не обрабатывается мимо этой линии:
players = Player.objects.filter(team__league=self.team.league).order_by(self.point_total())
Я также попытался это, но имеет тот же эффект:
players = self.objects.filter(team__league=self.team.league).order_by('player__point_total')
Как я могу заказать функцию общей точки, чтобы я мог определить ранг каждого игрока?
Где находится поле 'team' в вашей модели' Player'? Это не сработает, это ваш фактический код? –