2

我是 django 和 web 框架的新手。我正在尝试在给定其属性 Group 的子字符串的情况下过滤 django 中的模型

pack=My_pack.objects.get(Group=sumthing)

现在我的 Group 属性包含一对以“/”分隔的值,例如

Group="System/Application"

我想过滤模型只给一个值假设“系统”,那么如何做 dat????

4

4 回答 4

2

您正在寻找startswith字段过滤器

pack = My_pack.objects.filter(group__startswith='System')
于 2013-03-06T18:59:42.450 回答
1

这将是此查询的语法:

pack = My_pack.objects.get(group__icontains='System')
于 2013-03-06T18:56:22.950 回答
1

您可以在 django 中以不同的方式使用过滤器,

My_pack.objects.get 只会带一个实例,如果这里有多个实例,它会给你错误。所以你需要将它包含在 try except 块中。

pack = My_pack.objects.get(group__icontains='System')

另一方面

My_pack.objects.filter 将带来多个实例,如果没有找到实例,它将带来并清空列表[]

pack = My_pack.objects.filter(group__startswith='System')

您也可以使用名为的快捷功能之一get_object_or_404。这与 get 类似。不同之处在于您不需要将其包含在 try except 块中。如果它带来了实例,它会将实例作为返回值,但它没有找到任何实例,那么它将抛出 404 状态消息。

pack = get_object_or_404(My_pack, group__startswith='System')

于 2016-04-20T09:14:13.210 回答
0

一个很好的起点是The Definitive Guide to Django。尝试查看文档中的QuerySet API 参考

https://docs.djangoproject.com/en/1.5/ref/models/querysets/#icontains

您的代码将无法正常工作。采用:

pack = My_pack.objects.filter(Group__icontains='System')
于 2013-03-06T18:55:10.397 回答