javascript - 如何为views.py中的对象创建属性,以便将更改后的对象传递给JS代码

标签 javascript python ajax django

我通过 AJAX 和分页加载“无尽滚动”提要。在将对象传递给 JS 代码之前,我需要为每个对象添加属性(或者称为属性?),其中包含 bool 值,无论当前用户是否喜欢它。我认为它可能有效,但出了点问题,因为前端的所有内容都未定义。我如何以正确的方式实现我想要的?为每个对象创建属性非常重要,因为稍后只需像其他数据一样通过循环获取它就非常实用。

def loadmore(request,page_number):
    answers_to_questions_objects = Question.objects.filter(whom=request.user.profile).filter(answered=True).order_by('-answered_date')
    paginator = Paginator(answers_to_questions_objects,10)
    current_page = (paginator.page(page_number))
    for item in current_page:
        if request.user.profile in item.who_liked.all():
            item.liked = True
        else:
            item.liked = False
    print(current_page.liked)
    answers = serializers.serialize('json', current_page)
    data = {
        'answers': answers,

    }
    return Response(data)

最佳答案

serializers.serialize 将仅包含模型字段。它不会包含您在模型对象上设置的属性。相反,创建一个字典并将 liked 作为键添加到其中。

import json

def loadmore(request,page_number):
    # I added prefetch, so it will avoid making queries inside your loop.
    answers_to_questions_objects = Question.objects.filter(whom=request.user.profile).filter(answered=True).order_by('-answered_date').prefetch_related('who_liked')
    paginator = Paginator(answers_to_questions_objects,10)
    current_page = (paginator.page(page_number))
    # I don't know why Question model objects are called answers.
    answers = []
    for item in current_page:
        item_dict = { 'whom': item.whom.name,
                      'id': item.id,
                      # Add the other required fields.
                      }
        if request.user.profile in item.who_liked.all():
            item_dict['liked'] = True
        else:
            item_dict['liked'] = False
        answers.append(item_dict)

    data = {
        'answers': json.dumps(answers),

    }
    return Response(data)

更新:

如果您必须实现很多这样的 View ,您应该查看django-rest-framework。序列化器 API 和它附带的通用 View 让生活变得更加轻松。

关于javascript - 如何为views.py中的对象创建属性,以便将更改后的对象传递给JS代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40878287/

相关文章:

Javascript:在为动态创建的对象设置 onClick 处理程序时避免 eval()

javascript - Jest 测试为 eventemitter 对象发出事件(express)

python - 按创建日期的顺序打印目录的内容

python - 使用seaborn调整子图的大小

javascript - 随机 net::ERR_CONNECTION_RESET 问题

javascript - 类函数中 php 的轻松迭代

javascript - NodeJS Restify API 缓存最佳实践

python - 做 "[[' a', 2], ['b' ,1]] + [ ['b' , 2], ['c' , 1]] = [ ['b' , 3], ['a' , 2], 0x1045,67910"的任何 pythonic 方式?

css - 在 foursquare.com 上执行 'Recent Activity' 效果的页面小部件或插件?

html - Web 元素的命名约定