标签: django-orm

如何在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 ORM中select_related和prefetch_related的区别是什么?

在Django doc中,

select_related() "跟随"外键关系,在执行查询时选择其他相关对象数据.

prefetch_related() 对每个关系进行单独查找,并在Python中进行"加入".

"在python中加入"是什么意思?有人能说明一个例子吗?

我的理解是,对于外键关系,使用select_related; 对于M2M关系,请使用prefetch_related.它是否正确?

python django django-models django-orm

244
推荐指数
4
解决办法
11万
查看次数

django orm,如何查看(或记录)执行的查询?

有没有办法可以打印Django ORM生成的查询?

假设我执行以下语句: Model.objects.filter(name='test')

如何查看生成的SQL查询?

django django-models django-orm

158
推荐指数
5
解决办法
8万
查看次数

Django自我指称外键

我对Web应用程序和数据库的新东西都很陌生,所以这可能是一个愚蠢的问题.我想创建一个模型("CategoryModel"),其中的字段指向模型的另一个实例(其父项)的主要ID.

class CategoryModel(models.Model):
    parentId = models.ForeignKey(CategoryModel)
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?谢谢!

python django django-orm

142
推荐指数
4
解决办法
5万
查看次数

如何为具有多对多字段的Django模型创建对象?

我的模特 - >

class Sample(models.Model):
    users = models.ManyToManyField(User)
Run Code Online (Sandbox Code Playgroud)

我想这样做(在这个模型中保存用户,user1和user2) - >

user1 = User.objects.get(pk=1)
user2 = User.objects.get(pk=2)
sample_object = Sample(users=user1, users=user2)
sample_object.save()
Run Code Online (Sandbox Code Playgroud)

我知道这是错的:D,但我确定你得到了我想要做的......所以你会怎么做?

python django django-models django-orm

126
推荐指数
4
解决办法
8万
查看次数

Django values_list vs values

在Django中,以下两者之间有什么区别:

Article.objects.values_list('comment_id', flat=True).distinct()
Run Code Online (Sandbox Code Playgroud)

VS

Article.objects.values('comment_id').distinct()
Run Code Online (Sandbox Code Playgroud)

我的目标是获得每个下面的唯一注释ID列表Article.我已经阅读了文档(实际上已经使用了这两种方法).结果显然似乎相似.

django django-models django-orm django-queryset

107
推荐指数
4
解决办法
10万
查看次数

为什么要遍历占用大量内存的大型Django QuerySet?

该表包含大约一千万行.

for event in Event.objects.all():
    print event
Run Code Online (Sandbox Code Playgroud)

这导致内存使用量稳定增加到4 GB左右,此时行快速打印.第一行打印之前的漫长延迟令我感到惊讶 - 我预计它几乎可以立即打印出来.

我也尝试过Event.objects.iterator()以同样的方式行事.

我不明白Django加载到内存中的原因或为什么会这样做.我希望Django的通过在数据库级别的结果迭代,which'd意味着结果将在大约(长时间的等待之后,而不是一次全部)以恒定的速率进行打印.

我误解了什么?

(我不知道它是否是相关的,但我使用PostgreSQL.)

sql django postgresql django-orm

104
推荐指数
8
解决办法
4万
查看次数

从表字段中选择不同的值

我正在努力绕过Django的ORM.我想要做的是在我的表格中的字段中获取不同值的列表....相当于以下之一:

SELECT DISTINCT myfieldname FROM mytable
Run Code Online (Sandbox Code Playgroud)

(或者)

SELECT myfieldname FROM mytable GROUP BY myfieldname
Run Code Online (Sandbox Code Playgroud)

在使用原始sql之前,我至少喜欢用Django方式做.例如,使用表格:

id,街道,城市

1,赫尔大街

2,其他街,赫尔

3,Bibble Way,莱斯特

4,另一种方式,莱斯特

5,高街,Londidium

我想得到:

船体,莱斯特,Londidium.

django django-orm django-queryset query-performance

89
推荐指数
2
解决办法
8万
查看次数

Django只选择具有重复字段值的行

假设我们在django中有一个模型定义如下:

class Literal:
    name = models.CharField(...)
    ...
Run Code Online (Sandbox Code Playgroud)

名称字段不是唯一的,因此可以具有重复值.我需要完成以下任务:从模型中选择至少具有该name字段的重复值的所有行.

我知道如何使用纯SQL(可能不是最佳解决方案):

select * from literal where name IN (
    select name from literal group by name having count((name)) > 1
);
Run Code Online (Sandbox Code Playgroud)

那么,是否可以使用django ORM选择它?或更好的SQL解决方案?

sql django django-orm

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

如何在Django中重命名values()中的项目?

我想在djangoproject.com的这张票中做同样的事情,但是有一些额外的格式.从这个查询

>>> MyModel.objects.values('cryptic_value_name')
[{'cryptic_value_name': 1}, {'cryptic_value_name': 2}]
Run Code Online (Sandbox Code Playgroud)

我希望得到类似的东西:

>>> MyModel.objects.values(renamed_value='cryptic_value_name')
[{'renamed_value': 1}, {'renamed_value': 2}]
Run Code Online (Sandbox Code Playgroud)

是否有其他更内置的方式或我必须手动执行此操作?

django django-orm

86
推荐指数
3
解决办法
4万
查看次数