我需要你的幫助一次。我正在爲我的wargaming團隊開發一個項目。這是一個簡單的排名網站。所以我們有球員,他們參加比賽並獲得積分。我已經達到了能夠將球員分配到錦標賽中的地步,並將他們在錦標賽中獲得的位置歸爲他們的名字。基於計算值的Django計算
現在我必須計算積分。算法很簡單,但我在將值從Tournament
模型傳遞給Ranking
時遇到問題。每個錦標賽都有一個計算的評分(基於其他的事情,大部分是較大的錦標賽,較大的評分),在其他模型中,我無法使用它,需要您的幫助。最重要的是,如果在錦標賽中更改評分值會強制更新所有相關計算,那將會非常棒。
所以我們的模型一樣,:
class Player(models.Model):
class Meta:
name = models.CharField(max_length=50)
nicname = models.CharField(max_length=50,blank=True)
army = models.CharField(max_length=50)
def __unicode__(self):
return self.name
def __str__(self):
return self.name
class Tournament(models.Model):
class Meta:
name = models.CharField(max_length=100)
date = models.DateTimeField('date')
player_num = models.IntegerField
points = models.FloatField(default=1000.00)
def __unicode__(self):
return self.name
def __str__(self):
return self.name
然後,我有這樣的一個排名模型:
class TournamentStandings(models.Model):
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
player_place = models.FloatField
在admin.py我做計算爲TournamentAdmin:
fields = ['name', 'date', 'player_num', 'points', 'get_rating']
def get_rating(self, obj):
return obj.points/100.00
現在我想計算TournamentStandingsAdmin:
def player_points(self, obj):
return (obj.tournament.player_num/obj.player_place)* obj.tournament.get_rating
但結果卻是一個錯誤
「比賽」對象有沒有屬性「get_rating」
所以我的猜測是我的計算get_rating是不是一個真正的示範田,但如何解決這個問題?
如果你想打電話的模型的方法,那麼你需要真正定義它的模式,而不是在管理類。 –