【问题标题】:QuerySet is not JSON Serializable DjangoQuerySet 不是 JSON 可序列化的 Django
【发布时间】:2017-06-18 23:22:22
【问题描述】:

新手编程在这里。我有一个有很多行的模型,我想将每一行传递给 javascript。

第一次尝试:

Views.py

events = Events.objects.filter(user_id=user_id) // filter by user_id
context = {
            "email": request.user.email,
            "login": True,
            "objects": events,
        }
return render(request, 'fullcalendar/index.html', context)

Events 是表的名称,我将每一行存储在events 中。将其传递给一个名为context 的字典,然后将其传递给我的模板。然后从我的模板中我可以做这样的事情:

{% for object in objects %}
    <p>event.column_name</p>
{% endfor %}

这可以正常工作,但是我不能在 javascript 部分中这样做。

{% for object in objects %}
    var date = object.date // assuming object has a column named date
{% endfor %}

第二次尝试

所以我做了一些研究并决定使用 json。

在 Views.py 中我做了以下更改:

return render(request, 'fullcalendar/index.html', {"obj_as_json": simplejson.dumps(context)})

因此我希望这样做:

var objects = {{ obj_as_json }}

for object in objects 
    //Do some stuff

但我收到了错误QuerySet is not JSON Serializable Django。所以我查找了如何序列化对象并进行了以下更改:

data = serializers.serialize('json', events.objects.all())

但我收到以下错误:'QuerySet' object has no attribute 'objects'

伙计,必须有一种更简单的方法来做我想做的事。有什么想法吗?

【问题讨论】:

    标签: javascript python json django serialization


    【解决方案1】:

    试试这个:

    data = serializers.serialize('json', events)

    您收到的错误消息是告诉您events 已经是一个 QuerySet,没有理由尝试对其进行更多操作。

    您也可以重温您之前的尝试:

    {% for object in objects %}
        var date = object.date // assuming object has a column named date
    {% endfor %}
    

    你需要像这样实际使用 Django object

    {% for object in objects %}
        var date = {{ object.date }}
    {% endfor %}
    

    您在object 之前的操作方式只是undefined,您会收到错误cannot read property date of undefined

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 2014-02-04
      • 2020-03-04
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 2019-11-05
      • 2018-09-12
      • 2013-05-23
      相关资源
      最近更新 更多