在视图函数中将查询集打字转换为 list() 错误 - 在 shell 上工作

发布于 2024-11-25 02:35:12 字数 281 浏览 0 评论 0原文

我有以下代码:

s = StoryCat.objects.filter(category=c)
ids=s.values_list('id',flat=True)
ids=list(ids)
str= json.dumps( ids )
return HttpResponse(str)

使用 python shell 尝试时运行良好。在视图函数中运行它时,出现以下错误:

list() 恰好需要 2 个参数(给定 1 个),

这可能是什么问题?

sI have the following code:

s = StoryCat.objects.filter(category=c)
ids=s.values_list('id',flat=True)
ids=list(ids)
str= json.dumps( ids )
return HttpResponse(str)

This runs fine when trying it with python shell. when running it in a view function I get the following error:

list() takes exactly 2 arguments (1 given)

what could be the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云雾 2024-12-02 02:35:12

内置列表已在本地范围内被覆盖。如果您确实想使用 list(),这里是一个解决方法的示例:

def list(a, b): pass # somewhere list is redefined
try:
    c = list() # so this will fail
except TypeError as e:
    print "TypeError:", e # with this error
from __builtin__ import list as lst # but we can get back the list builtin
c = lst() # and use it without overriding the local version of list
print c

在您的情况下,最小的更改是将 ids=list(ids) 替换为

ids = __import__('__builtin__').list(ids)

它不会更改您的命名空间一切,却让我悲伤。

编辑:请参阅@Alex-Laskin 的评论,了解一种更简单的一次性方法。

The list builtin has been overridden in the local scope. Here is an example of a workaround if you really want to use list():

def list(a, b): pass # somewhere list is redefined
try:
    c = list() # so this will fail
except TypeError as e:
    print "TypeError:", e # with this error
from __builtin__ import list as lst # but we can get back the list builtin
c = lst() # and use it without overriding the local version of list
print c

In your case, a minimal change would be to replace ids=list(ids) with

ids = __import__('__builtin__').list(ids)

which doesn't change your namespace at all, but makes me sad.

Edit: See the comment by @Alex-Laskin for a simpler one-off way of doing this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文