Necesito una pantalla como esta:
{% 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 %} pero cuando usé (Si califico el primer juego) user_rate = Rate.objects.filter(user=request.user) Me muestra "Editar" en el juego sin tasa. objects.get() dame: "get() devolvió más de una tasa, ¡devolvió 2!"
y quiero mostrar
{% for x in user_rate %} Your rate : {{x.rate}} {% endfor %}pero esto también muestra la tasa de usuario de todos los juegos. Tengo la misma estructura en comentarios y funciona, solo veo mis comentarios de este juego, pero no se porque no funciona con rate del juego...
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']vistas.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)# 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)En tu plantilla:
{% 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 %}Bien, lo tengo. Soy estúpido. Tal vez alguien algún día lo use.
Así que solo necesitaba
Rate.objects.filter(user = request.user, game_id = game_id)Fue fácil, y tuve muchos problemas con eso.