如何在 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 在查询子模型属性时进行的数据库调用次数?