У меня есть две модели, которые связаны друг с другом.Для надуманного примера первый - это список вещей, а второй - список людей, которым понравилась каждая вещь.
Я хочу показать список вещей, и если мне понравилась одна из них, топоказать значок рядом с ним.
# in the models
class Things(models.Model):
name = models.CharField(max_length = 100)
class Likes(models.Model):
user = models.ForeignKey(User)
thing = models.ForeignKey(Thing)
# in the view
@login_required
def list_of_things(request):
things = things.objects.all()
context = RequestContext(request, {'things': things})
return render_to_response('thinglist.html', context)
# in the template
{% for thing in things %}
<li>{{ thing.name }}
## PSUEDO CODE HERE
{% if I've liked this thing %}
<img src="like.png">
{% endif %}
</li>
Я обнаружил, что в оболочке Python я могу сделать это:
>>> thing.likes_set.filter(user=user)
и получить то, что я хочу, но я неуверен, где в коде выше я должен положить это.Я немного подумал, что если бы я добавил метод к своей модели вещей, я мог бы в своем шаблоне сделать:
{% if thing.liked_by_me %}
Но для этого модель должна знать имя пользователя.Кроме того, похоже, что это не самая лучшая производительность.
Есть предложения?