首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果不保存数据库Django,则无法将数据临时添加到实例

如果不保存数据库Django,则无法将数据临时添加到实例
EN

Stack Overflow用户
提问于 2018-06-05 04:10:27
回答 1查看 32关注 0票数 0

我有一组结果,这个结果有一个like ManyToManyField属性,它存储了所有具有like结果的用户。

我想归档的是为结果添加一个额外的时态属性,称为isLiked

因此,稍后在模板上,我可以向html添加一个data-attribute,表明请求的用户已经喜欢了X request。

我试着用这种方法来做到这点:

views.py

代码语言:javascript
复制
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

代码语言:javascript
复制
...
{% for pro  in pros %}
<button data-is-liked={{pro.isLiked}}> icon</button>
{% endfor %}
...

有人知道我是怎么做到的吗?

提前感谢

Django版本: 2.0

Python : 3.6.5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 06:17:09

我最终这样解决了这个问题:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档