私はもう一度あなたの助けが必要です。私はwargamingグループのプロジェクトに取り組んでいます。それは簡単なランキングサイトです。だから我々は選手を持っている、彼らはトーナメントに参加し、ポイントを取得します。トーナメントにプレーヤーを割り当て、トーナメントで行った場所を自分の名前に割り当てることができるようになった。計算値に基づくジャンゴの計算
ポイントを計算する必要があります。アルゴリズムは簡単ですが、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
をそして私は、この種のランキングモデルがあります:admin.pyで
class TournamentStandings(models.Model):
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
player_place = models.FloatField
私は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」は属性を持っていませんが、それを回避するには?
あなたがモデルにメソッドを呼び出したい場合は、あなたは、実際にモデルに、それを定義する必要はありません管理クラスで –