我是 django 和 web 框架的新手。我正在尝试在给定其属性 Group 的子字符串的情况下过滤 django 中的模型
pack=My_pack.objects.get(Group=sumthing)
现在我的 Group 属性包含一对以“/”分隔的值,例如
Group="System/Application"
我想过滤模型只给一个值假设“系统”,那么如何做 dat????
您正在寻找startswith
字段过滤器:
pack = My_pack.objects.filter(group__startswith='System')
这将是此查询的语法:
pack = My_pack.objects.get(group__icontains='System')
您可以在 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')
一个很好的起点是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')