Только что написал функцию на Django, которая позволяет пользователям голосовать только один раз за пост (ошибка).
Как вы увидите, что это было сделано, нажав на ссылку. Просто хотелось бы узнать, можно ли скрыть кнопку «Голосовать» после того, как пользователь проголосовал один раз?
Вот код, надеюсь, это поможет:
views.py:
def vote(request, bug_id):
bug = get_object_or_404(BugTable, pk=bug_id)
if request.user.is_authenticated:
bug.vote += 1
try:
Vote.objects.create(bug=bug, user=request.user)
bug.save()
except IntegrityError:
messages.success(request, 'You already voted for this bug')
return redirect(bugfix)
return render(request, 'detail.html', {'bug': bug})
models.py
class BugTable(models.Model):
author = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
bug_name = models.CharField(max_length=50, blank=False)
vote = models.IntegerField(default=0)
def __str__(self):
return self.bug_name
class Vote(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
bug = models.ForeignKey(BugTable, on_delete=models.CASCADE,
related_name='voter')
class Meta:
unique_together = ('user', 'bug')
detail.html
{% block features %}
<h5 style="margin-top: 10px;"><strong>{{ bug.bug_name }}</strong></h5>
<a href="{% url 'vote' bug.id %}">Vote</a>
{{ bug.vote}}
{% endblock %}
Пробовал с простой функцией jQuery с использованием метода .hide, не сработало. Может быть, есть что-то, что я мог бы использовать, просто введя функцию {% if%}? Спасибо за любой совет