【发布时间】:2016-07-26 14:05:15
【问题描述】:
views.py
from itertools import chain
def post_list(request):
i=1
while i:
list_i = Post.objects.filter(title__startswith="i")
post_list = list(chain('' + ',' + 'list_i'))
if len(post_list) >= 5 :
break
return JsonResponse(serializers.serialize('json', post_list), safe=False)
我想让 post_list 是 list_1、list_2、..、list_i 的总和,并使其序列化。
但它给我的 AttributeError 如下。
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.9.7
Python Version: 3.5.2
Installed Applications:
[...I omitted]
Installed Middleware:
[...I omitted]
Traceback:
File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/keepair/djangogirls/blog/views.py" in post_list
33. return JsonResponse(serializers.serialize('json', post_list), safe=False)
File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/serializers/__init__.py" in serialize
129. s.serialize(queryset, **options)
File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/serializers/base.py" in serialize
83. concrete_model = obj._meta.concrete_model
Exception Type: AttributeError at /
Exception Value: 'str' object has no attribute '_meta'
我该如何解决这个问题?
感谢您阅读我的问题。
【问题讨论】:
-
我不明白你的代码。
list(chain('' + ',' + 'list_i'))是做什么的?如果您有一个查询集list_i,为什么要在list(chain('' + ',' + 'list_i'))中将其设为字符串? -
另外,
getting sum of queryset是什么意思?什么总和? -
我想要 list_1 + list_2 + list_3 ... 直到 Post 的总和为 gte=5。因为我是编程新手,所以我很难遵循 python itertools、chain 的规则。
list(chain('' + ',' + 'list_i'))是我使用链功能的努力。还有什么好办法吗? -
哦,这就是你想要做的。不,itertools 链在这里完全不合适。
-
我想要 list_i 的总和。如果 list_1 中有 5 个帖子,只需要 list_1,但是如果 list_1 中有 0 个帖子,list_2 中有 2 个帖子,list_3 中有 4 个帖子,我想要 list_1 和 list_2 和 list_3 的总和。