Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
Django, how do it in template?

I need display like this :

{% if user_rate %}
    <h2><a href="/games/{{game.id}}/{{game.slug}}/add_rate/edit/{{rate.id}}/">Edit rate</a></h2>
{% else %}
 <h2><a href="/games/{{game.id}}/{{game.slug}}/add_rate">Add rate</a></h2>
{% endif %}

but when I used ( If I rate first game) user_rate = Rate.objects.filter(user=request.user) It display me "Edit" in the game without rate. objects.get() give me : "get() returned more than one Rate -- it returned 2!"

and I want to display

 {% for x in user_rate %}
 Your rate : {{x.rate}}
 {% endfor %}

but this also display user's rate from all games. I have the same structure in comments and it's works, I see only my comments from this game, but I don't know why it doesn't work with rate of the game...

class Rate(models.Model):
    game = models.ForeignKey(Games)
    user = models.ForeignKey(User)
    rate = models.IntegerField(validators=[MinValueValidator(1),
                                   MaxValueValidator(10)])

    class Meta:
    unique_together = ['game', 'user']

views.py

def game(request, game_id, slug):
    game = Games.objects.get(id = game_id)
    genre = game.genres.all()
    platform = game.platforms.all()
    quantity = Games.objects.all().count()
    user = User.objects.all().count()
    number_of_rates = Rate.objects.filter(game_id = game_id).count()
    rate_average = Rate.objects.filter(game_id = game_id).aggregate(Avg("rate")).values()[0]



    if request.user.is_authenticated():
        user_rate = Rate.objects.filter(user=request.user)


        ctx = {'game' : game, 'genre' : genre, 'platform' : platform, 'quantity' :quantity, \
        'user' : user, 'rate_average' : rate_average, 'user_rate': user_rate, \
       'number_of_rates' : number_of_rates}
        return render(request, 'game.html', ctx)

    else:
        ctx = {'game' : game, 'genre' : genre, 'platform' : platform, 'quantity' :quantity, \
        'user' : user, 'rate_average' : rate_average, 'number_of_rates' : number_of_rates}
        return render(request, 'game.html', ctx)
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

# Something along the lines of this.
rate = Rate.objects.get(user=request.user)
context = {...., "user": request.user, "rate": rate}
return render(request, 'template.html', context=context)

In your template:

 {% if rate %}
    <h2><a href="/games/{{game.id}}/{{game.slug}}/add_rate/edit/{{rate.id}}/">Edit rate</a></h2>
{% else %}
     <h2><a href="/games/{{game.id}}/{{game.slug}}/add_rate">Add rate</a></h2>
{% endif %}
over 4 years ago · Santiago Trujillo Relatório

0

Ok, I got it. I'm stupid. Maybe someone someday will use it.

So I needed just

Rate.objects.filter(user = request.user, game_id = game_id)

It was easy, and I had a lot of problem with that.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda