pk__在Django中意味着什么?

时间:2010-02-04 09:48:05

标签: python django

Model.objects.filter(pk__in=[list of ids])

Model.objects.filter(pk__in=[1,2,3])

如何在模板中显示此数据?

def xx(request):
    return HttpResponse(Model.objects.filter(pk__in=[1,2,3]))

2 个答案:

答案 0 :(得分:14)

这意味着,向我提供模型Model的所有对象,其中123为主键。

请参阅Field lookups - in

您将获得一个对象列表,您可以使用for template tag

在每个其他列表中将其显示在模板中
{% for object in objects %}
    Some value: {{ object.value }}
{% endfor %}

我不想冒犯你,但你的问题是什么?这一点在文档中都有详细描述。

要了解如何创建Django应用程序,您应该阅读tutorialDjango book

答案 1 :(得分:0)

一种棘手的批量选择方式(处理大量数据时的最佳实践)。 由于只发送一个 SQL 查询,它会比在循环中调用 get/get_or_create 更快。

尝试计时:

Model.objects.filter(pk__in=[list of ids])

还有这个:

[Model.objects.get(pk=i) for i in ids]

另请注意,在您的笔记本电脑上运行时,django 与数据库通信时的延迟最小(生产可能有所不同)。