标签: django-queryset

如何在Django视图中组合2个或更多查询集?

我正在尝试构建我正在构建的Django站点的搜索,并且在搜索中我正在搜索3种不同的模型.为了获得搜索结果列表的分页,我想使用通用的object_list视图来显示结果.但要做到这一点,我必须将3个查询集合并为一个.

我怎样才能做到这一点?我试过这个:

result_list = []            
page_list = Page.objects.filter(
    Q(title__icontains=cleaned_search_term) | 
    Q(body__icontains=cleaned_search_term))
article_list = Article.objects.filter(
    Q(title__icontains=cleaned_search_term) | 
    Q(body__icontains=cleaned_search_term) | 
    Q(tags__icontains=cleaned_search_term))
post_list = Post.objects.filter(
    Q(title__icontains=cleaned_search_term) | 
    Q(body__icontains=cleaned_search_term) | 
    Q(tags__icontains=cleaned_search_term))

for x in page_list:
    result_list.append(x)
for x in article_list:
    result_list.append(x)
for x in post_list:
    result_list.append(x)

return object_list(
    request, 
    queryset=result_list, 
    template_object_name='result',
    paginate_by=10, 
    extra_context={
        'search_term': search_term},
    template_name="search/result_list.html")
Run Code Online (Sandbox Code Playgroud)

但这不起作用当我尝试在通用视图中使用该列表时,我收到错误.该列表缺少clone属性.

有人知道如何合并三个列表page_list,article_listpost_list

django search django-queryset django-q

613
推荐指数
13
解决办法
24万
查看次数

如何在Django查询集过滤中做不相等的操作?

在Django模型QuerySets中,我看到有一个__gt__ltfor的比较值,但是有__ne/ !=/ <>(不等于?)

我想用不等于过滤掉:

例:

Model:
    bool a;
    int x;
Run Code Online (Sandbox Code Playgroud)

我想要

results = Model.objects.exclude(a=true, x!=5)
Run Code Online (Sandbox Code Playgroud)

!=不正确的语法.我试过__ne,<>.

我最终使用:

results = Model.objects.exclude(a=true, x__lt=5).exclude(a=true, x__gt=5)
Run Code Online (Sandbox Code Playgroud)

python django django-models django-queryset

608
推荐指数
15
解决办法
34万
查看次数

过滤查询集中的空名称或NULL名称

我有first_name,last_name和别名(可选)我需要搜索.所以,我需要一个查询来给我所有具有别名集的名称.

只有我能做到:

Name.objects.filter(alias!="")
Run Code Online (Sandbox Code Playgroud)

那么,与上述相同的是什么?

django null filter django-models django-queryset

444
推荐指数
6
解决办法
33万
查看次数

从Django QuerySet获取SQL

如何从QuerySet对象获取Django将在数据库中使用的SQL?我正在尝试调试一些奇怪的行为,但我不确定哪些查询会进入数据库.谢谢你的帮助.

python sql django django-queryset

279
推荐指数
5
解决办法
14万
查看次数

Django过滤器 - 还是?

我如何在django过滤器中执行"或"操作.

基本上,我希望能够列出用户添加的项目(它们被列为创建者)或项目已被批准

所以我基本上需要选择

item.creator = owner or item.moderated = False
Run Code Online (Sandbox Code Playgroud)

我如何在django中执行此操作(最好使用过滤器/查询集)

django django-queryset

278
推荐指数
6
解决办法
13万
查看次数

如何在django queryset中执行OR条件?

我想写一个等同于这个SQL查询的Django查询:

SELECT * from user where income >= 5000 or income is NULL.
Run Code Online (Sandbox Code Playgroud)

如何构造Django queryset过滤器?

User.objects.filter(income__gte=5000, income=0)
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它AND是过滤器.我想过OR滤器来获得各个查询集的联合.

python sql django django-orm django-queryset

261
推荐指数
5
解决办法
14万
查看次数

django过滤器包含值列表

我确定这是一个微不足道的操作,但我无法弄清楚它是如何完成的...如何为值列表创建一个django查询.

必须有比这更聪明的东西:

ids = [1, 3, 6, 7, 9]

for id in ids:
    MyModel.objects.filter(pk=id)
Run Code Online (Sandbox Code Playgroud)

我想把它们全部放在一个节目中,例如:

MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Run Code Online (Sandbox Code Playgroud)

python django django-queryset

255
推荐指数
4
解决办法
17万
查看次数

Django数据库查询:如何按日期范围过滤对象?

我在一个模型中有一个字段

class Sample(models.Model):
    date = fields.DateField(auto_now=False)
Run Code Online (Sandbox Code Playgroud)

现在,我需要按数据范围过滤对象,例如,2011年1月1日到2011年1月31日之间的所有对象?

谢谢你的帮助!

python django django-models django-queryset

213
推荐指数
6
解决办法
24万
查看次数

如果对象存在,如何获取对象,如果不存在则为None?

当我要求模型管理器获取一个对象时,它会DoesNotExist在没有匹配对象时引发.

go = Content.objects.get(name="baby")
Run Code Online (Sandbox Code Playgroud)

相反的DoesNotExist,我怎么能有go可以None代替?

python django django-queryset

193
推荐指数
12
解决办法
16万
查看次数

如何在Django中过滤DateTimeField的日期?

我试图过滤DateTimeField与日期的比较.我的意思是:

MyObject.objects.filter(datetime_attr=datetime.date(2009,8,22))
Run Code Online (Sandbox Code Playgroud)

我得到一个空的查询集列表作为答案因为(我认为)我不考虑时间,但我想"随时".

Django有这么简单的方法吗?

我有时间在日期时间设置,但事实并非如此00:00.

python django datetime filter django-queryset

159
推荐指数
10
解决办法
16万
查看次数