我有一组结果,这个结果有一个like ManyToManyField属性,它存储了所有具有like结果的用户。
我想归档的是为结果添加一个额外的时态属性,称为isLiked
因此,稍后在模板上,我可以向html添加一个data-attribute,表明请求的用户已经喜欢了X request。
我试着用这种方法来做到这点:
views.py
def list_consequences(request, proponsal_id):
try:
consequences: [Consequence] = Consequence.objects.filter(of_proponsal=proponsal_id)
user_likes =request.user.likes_consequences.get_queryset()
union = consequences | user_likes
for consequence in union:
aux =consequences.get(pk=consequence.pk)
aux.isLiked=True
pros: Consequence = consequences.filter(efecto=Consecuencia.PRO)
against: Consequence = consequences.filter(efecto=Consecuencia.AGAINST)
template = loader.get_template('participation/consequences.html')
context = {
'pros': pros,
'against': against,
'is_user_authenticated': str(request.user.is_authenticated).lower(),
}
return HttpResponse(template.render(context, request))
except Consequence.DoesNotExist:
raise Http404("The consequence with id doesn't exist")
所以在后面的模板中我可以这样做:
consequences.html
...
{% for pro in pros %}
<button data-is-liked={{pro.isLiked}}> icon</button>
{% endfor %}
...
有人知道我是怎么做到的吗?
提前感谢
Django版本: 2.0
Python : 3.6.5
发布于 2018-06-05 06:17:09
我最终这样解决了这个问题:
def _getConsequences(user: User, proponsal_id):
consequences: [consequence] = Consequence.objects.filter(of_proponsal=proponsal_id)
user_likes = user.like_consequence.get_queryset()
pros: Consequence = consequences.filter(efect=Consecuencia.PRO)
union = pros & user_likes
pro_extra_data = []
for pro in pros:
if pro in union:
pro.isLiked = True
else:
pro.isLiked = False
pro_extra_data.append(pro)
#... same procedure for contra_extra_data
return pro_extra_data, contra_extra_data
https://stackoverflow.com/questions/50688071
复制相似问题