2015-01-02 16 views
1

我試圖創建高分列表。我需要得到所有球員的高分和當前球員的高分。我使用django auth。Django - 驗證用戶是否創建了對象

出於某種原因,我無法檢查當前用戶是否擁有遊戲。 if current_user.gameshop_user.auth_user == score['user'].user: - > False即使current_user.gameshop_user.auth_user - > Player_one和score['user'].user: - > Player_one。

models.py

... 
class GameShopUser(models.Model): 
    auth_user = models.OneToOneField(User, related_name='gameshop_user') 
    email_validated = models.BooleanField(default=False) 

class ScoreEntry(models.Model): 
    timestamp = models.DateTimeField('date scored') 
    score = models.IntegerField() 
    user = models.ForeignKey('GameShopUser', related_name='scores') 
    game = models.ForeignKey('Game', related_name='scores') 

view.py

... 
def play_view(request, slug): 

    current_user = request.user 
    queryset = ScoreEntry.objects.order_by('-score') 
    high_scores = queryset[:3] 
    all_scores_without_index = queryset.values() 

    all_scores = [] 
    i = 0 

    for score in all_scores_without_index: 
     i += 1 
     all_scores.append(score) 
     score['index'] = i 
     score['user'] = ScoreEntry.objects.get(id=score['id']) 

    high_scores_of_current_player = [] 
    for score in all_scores: 
     if current_user.gameshop_user.auth_user == score['user'].user: 
     print("success") 

    print(current_user) 
    print(score['user'].user) 

    top = {} 
    top_score = 0 
    for score in all_scores: 
     if score['score'] > top_score: 
      top_score = score['score'] 
      top = score 
... 

play.html

... 
    <h4>High Scores</h4> 
    <table class="table"> 
    {% for scoreEntry in high_scores %} 
     <tr> 
     <td>{{ forloop.counter }}</td> 
     <td>{{ scoreEntry.user }}</td> 
     <td>{{ scoreEntry.score }}</td> 
     </tr> 
    {% endfor %} 
    </table> 
<h4>My High Scores</h4> 
    <table class="table"> 
     <tr> 
      <td>{{ top.index }}</td> 
      <td>{{ top.user.user }}</td> 
      <td>{{ top.score }}</td> 
     </tr> 
    </table> 
</div> 
... 

回答

4
current_user.gameshop_user.auth_user == score['user'].user 

在這裏,您將比較contrib.auth.User與models.GameShopUser。嘗試比較urrent_user.gameshop_user與分數['user']。用戶

3

你要比較一個GameShopUser對象與auth.User對象 - 這些將永遠不會相同。

改爲使用current_user.gameshop_user == score['user'].user

相關問題