我想写一个等同于这个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滤器来获得各个查询集的联合.
在Django doc中,
select_related()"跟随"外键关系,在执行查询时选择其他相关对象数据.
prefetch_related()对每个关系进行单独查找,并在Python中进行"加入".
"在python中加入"是什么意思?有人能说明一个例子吗?
我的理解是,对于外键关系,使用select_related; 对于M2M关系,请使用prefetch_related.它是否正确?
有没有办法可以打印Django ORM生成的查询?
假设我执行以下语句: Model.objects.filter(name='test')
如何查看生成的SQL查询?
我对Web应用程序和数据库的新东西都很陌生,所以这可能是一个愚蠢的问题.我想创建一个模型("CategoryModel"),其中的字段指向模型的另一个实例(其父项)的主要ID.
class CategoryModel(models.Model):
parentId = models.ForeignKey(CategoryModel)
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?谢谢!
我的模特 - >
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,但我确定你得到了我想要做的......所以你会怎么做?
在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.我已经阅读了文档(实际上已经使用了这两种方法).结果显然似乎相似.
该表包含大约一千万行.
for event in Event.objects.all():
print event
Run Code Online (Sandbox Code Playgroud)
这导致内存使用量稳定增加到4 GB左右,此时行快速打印.第一行打印之前的漫长延迟令我感到惊讶 - 我预计它几乎可以立即打印出来.
我也尝试过Event.objects.iterator()以同样的方式行事.
我不明白Django加载到内存中的原因或为什么会这样做.我希望Django的通过在数据库级别的结果迭代,which'd意味着结果将在大约(长时间的等待之后,而不是一次全部)以恒定的速率进行打印.
我误解了什么?
(我不知道它是否是相关的,但我使用PostgreSQL.)
我正在努力绕过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中有一个模型定义如下:
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解决方案?
我想在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)
是否有其他更内置的方式或我必须手动执行此操作?