如何在 django 中使用模型进行查询

Posted

技术标签:

【中文标题】如何在 django 中使用模型进行查询【英文标题】:how to use models in django for a query 【发布时间】:2019-06-06 02:31:11 【问题描述】:

假设我有一个带有字段名称和年龄的表 usr 表 usr

____________
id|name   |age|

1 |dinkan | 12|

____________

我的查询是

select id from usr where name="dinkan" or age="20";

对应的输出应该是1

所以,我的问题是如何在 django 2.1 中使用模型实现这一点

【问题讨论】:

【参考方案1】:

您应该使用 django 模型提供的Q 运算符。

Q 对象让您可以完全控制查询的 where 子句。

使用这样的 orm 查询:

from django.db.models import Q

Table.objects.filter(Q(name="dinkan") | Q(age="20")).values("id")

你可以阅读更多关于它here

【讨论】:

【参考方案2】:

如果你只想要一个结果,那么你应该写:

from django.db.models import Q

Model.objects.filter(Q(name="name") | Q(age="age")).first().id

相应的输出将是 1。

更新:

如果你想要所有的 id 然后

from django.db.models import Q

Model.objects.filter(Q(name="name") | Q(age="age")).values("id")

【讨论】:

如果我想要表中的所有 id,那么代码是什么?【参考方案3】:
class User(models.Model):
    user = models.CharField()
    age = models.SmallIntegerField()

你的模型和我假设的差不多。

def user():
   user = User.objects.filter(name = 'dinkan', age = '20')

该用户将返回一个查询集,如果您的数据库中没有相同的姓名和年龄,那么您也可以使用“get”。

user = User.objects.get(name = 'dinkan', age = '20')

【讨论】:

以上是关于如何在 django 中使用模型进行查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在双连接关系之后在 Django 中执行查询(或:如何绕过 Django 对多对多“通过”模型的限制?)

如何减少 Django 在查询子模型属性时进行的数据库调用次数?

如何在sphinx-django中使用两个模型进行单索引搜索

如何比较 Django 查询集

如何在 Django 中序列化模型实例?

如何使用 django 查询集按小时对对象进行分组?