2012-01-24 50 views
1

私はこの注釈について、注釈について最も傷つきやすい上位5名のプレイヤーを見つけるように頼んだが、今は正しい情報を表示することに問題がある。注釈が正しく表示されない/正常に動作しない

これは私の現在のビューである:私はmost_injuredをプリントアウトするとき

def home(request): 
    context={} 
    most_recent = PlayerInjury.objects.all().order_by('-timestamp')[:5] 
    news = News.objects.all() 
    most_injured = PlayerInjury.objects.annotate(injury_count=Count('id')).order_by('-injury_count')[:5] 
    print most_injured 
    context['most_injured'] = most_injured 
    context['most_recent'] = most_recent 
    context['news'] = news 
    return render_to_response('dash/home.html', RequestContext(request, context)) 

models.py

class PlayerInjury(models.Model): 
    player = models.ForeignKey(Player) 
    injury_type = models.ForeignKey(Injury) 
    injury_date = models.DateField(verbose_name='Injured On', null=True, blank=True) 
    description = models.CharField(verbose_name='Description', max_length=180, null=True, blank=True) 
    status = models.ForeignKey(Status) 
    projected_return = models.DateField(verbose_name='Projected Return Date', null=True, blank=True) 
    hide = models.BooleanField(default=False) 
    returned = models.BooleanField(default=False) 
    timestamp = models.DateTimeField(auto_now_add=True) 

class Player(models.Model): 
    first_name = models.CharField(verbose_name='First Name', max_length=30, null=True, blank=True) 
    last_name = models.CharField(verbose_name='Last Name', max_length=30, null=True, blank=True) 
    team = models.ForeignKey(Team, related_name='Team played for') 
    pob = models.CharField(verbose_name='Place of Birth', max_length=100, null=True, blank=True) 
    dob = models.DateField() 
    age = models.IntegerField(null=True, blank=True) 
    height = models.CharField(verbose_name='Height', max_length=10, null=True, blank=True) 
    weight = models.CharField(verbose_name='Weight', max_length=10, null=True, blank=True) 
    drafted_by = models.ForeignKey(Team, related_name='drafted by') 

は、しかし、私は得る:
- プレイヤーA
- プレイヤーB
- プレーヤーA

本当に、私はそれはのように表示しなければならないはず:
- プレイヤーA
- プレイヤーB

という事実にプレイヤーAは、より多くのプレイヤーB

その後、任意の提案を傷つけてきましたか?

私はこれがうまくいくと思いました。
- プレイヤーA(2件の傷害)
- プレイヤーB(1傷害)
- など

+0

を必要とするモデルを投稿してください。 – aganders3

+0

が私のmodels.pyを追加しました – TheLifeOfSteve

+0

'Player'のあなたのモデルはどのように見えますか? – aganders3

答えて

1

代わりにこれをやってみてください。

most_injured = Player.objects.annotate(injury_count=Count('playerinjury')).order_by('-injury_count')[:5] 
+0

ROFL。それは私が彼の答えに使用するために彼に与えた正確なコードです。なぜ彼はそれを変更することを決めたのか分かりませんが、彼は質問をする前にOP情報を与えてくれた点を得てくれて賞賛しています。 ;) –

+0

言葉は、汚い、ハハを感じる。私はおそらく、これに対処する前に前の投稿をチェックしたはずです。ゆうじのように見え、私も首と首をしていました。彼の答えはおそらく、あなたの答えを変えることが悪い考えであった理由についてのいくつかの説明が含まれているので、おそらくより良いでしょう。 – aganders3

+0

@ aganders3、それは面白かった!初めて "二度と"見たことがあります。 –

1

あなたが持っているのコースのようにするには、個々のPlayerInjuryオブジェクトを照会していますあなたの結果の複数の選手。

Countidの場合、IDごとに1つのオブジェクトしか存在しないため、常に1のカウントを取得します。

あなたが怪我で注文したプレイヤオブジェクトをしたい場合、あなたは

Player.objects.annotate(count=Count('playerinjury')).order_by('-count') 
関連する問題