【问题标题】:how to use models in django for a query如何在 django 中使用模型进行查询
【发布时间】: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 中使用模型实现这一点
【问题讨论】:
标签:
python
mysql
django
django-models
【解决方案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")
【解决方案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')