Django : в поле ManyToManyField как я могу найти, существует ли связь?
Я создаю систему правды для моего проекта PoopFacts, где люди могут голосовать за True, False или удалить свой голос.
У меня работает система голосования, но Я пытаюсь заставить кнопку менять цвет, чтобы показать, проголосовали ли они уже за True или False или сняли свой голос.
Я показываю код кнопки "Like", потому что он проще и использует ту же логику.
.models
PoopFact(models.Model):
likes = models.ManyToManyField(User, related_name='likes')
.views
def home(request):
poopfacts = PoopFact.objects.all().order_by('-date')
context = {'form': form, 'poopfacts':poopfacts,}
return render(request, 'home.html', context)
Идея примерно такая
html
{% for poopfact in poopfacts %}
{% if poopfact.likes.user.exists() %}
<button type="submit" class="btn btn-primary btn-block">Like</button>
{% else %}
<button type="submit" class="btn btn-block">Like</button>
{% endif %}
Так что если им понравилось, кнопка будет синей, и если они нажмут на нее снова, это снимет их голос и сделает его нормальным.
Есть ли у кого-нибудь хорошая идея, как заставить это работать? Я столько всего перепробовал, но безуспешно.
в html
{% for poopfact in poopfacts %}
{% if user in poopfact.likes.all %}
<button type="submit" class="btn btn-primary btn-block">Like</button>
{% else %}
<button type="submit" class="btn btn-block">Like</button>
{% endif %}
{% endfor %}