【问题标题】: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")
      

      【讨论】:

      • 如果我想要表中的所有 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')
      

      【讨论】:

        猜你喜欢
        • 2021-06-08
        • 1970-01-01
        • 1970-01-01
        • 2021-09-03
        • 2012-12-16
        • 1970-01-01
        • 2020-02-22
        • 2012-08-26
        • 1970-01-01
        相关资源
        最近更新 更多