Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

262
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!