Django判断数据库中是不是有该记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django判断数据库中是不是有该记录相关的知识,希望对你有一定的参考价值。

用if语句判断一下就可以了,比如
查找users表中是否存在email为接收到email的记录
userinfo = Users.objects.get(email = request.POST['email'])if userinfo: print("yes,we have this email")else: print("sorry,email is not register")
参考技术A try:
Users.objects.get(useraccount=userPhone)
return JsonResponse('res':0,'msg':'手机号已被注册')
except:
return JsonResponse('res':1,'msg':'手机号可注册')

Django ORM:如何根据所有记录中的列获取唯一记录(需要模型对象而不是特定值对象)

【中文标题】Django ORM:如何根据所有记录中的列获取唯一记录(需要模型对象而不是特定值对象)【英文标题】:Django ORM: How to get unique records based on a column from all records(Need model object not particular value object) 【发布时间】:2016-08-11 05:08:19 【问题描述】:

使用 mysql 作为后端数据库。查询数据库中的所有记录,例如:

ob = Shop.objects.all()

这里查询所有记录,因为需要所有 n 个列的值。那就来答题吧。

想要获取基于某一列的所有不重复记录。尝试使用 Python SET 函数。但它会删除完全相同的记录。我的记录在特定列值中具有相同的值,但在其他列中的值不同。

有人可以在 Django ORM 的帮助下分享一些想法吗!!!

【问题讨论】:

你的意思是你想要“不同的”值吗?... 是的。我尝试使用 distinct..但是 mysql 在 django orm 中不支持 distinct。 Select DISTINCT individual columns in django?的可能重复 我的数据库不支持 DISTINCT 函数。我无法更改任何其他数据库..Rigth 现在使用 Mysql .....知道吗??? 那个答案是针对mysql的,你可以在mysql上使用distinct(据我所知),但只有postgres支持distinct(fields) 【参考方案1】:

如果我正确理解了您的问题,您只想检索没有重复的记录。你可以用这个查询来做到这一点:

SELECT * from shops GROUP by (duplicate_field_name) having COUNT(*) = 1

如何用 django 做到这一点?那么 GROUP by 是 Django 最糟糕的地方。但是,这可以通过原始查询来实现。

ob = Shop.objects.raw('SELECT * from shops GROUP BY
 (duplicate_field_name) having COUNT(*) = 1 ORDER BY some_field')

记得将shopsduplicate_field_name分别替换为实际的表名和列名。

【讨论】:

我在应用 order_by 时收到此错误“RawQuerySet”对象没有属性“order_by”。我该怎么办? 你清楚地理解了Q。但现在我还没有得到答案。我可以期待任何帮助吗? 是的,您不能将 order_by() 调用与原始查询集一起使用。您可以做的是将排序添加到查询本身。正在更新答案。 我无法通过查询本身添加排序。因为我在某些上下文中需要这些记录,然后只有我可以应用排序。在我的功能中断之前 还有一件事我正在传递一个订购清单..那么我该如何继续?

以上是关于Django判断数据库中是不是有该记录的主要内容,如果未能解决你的问题,请参考以下文章

django怎么判断数据库的记录是不是存在

微信小程序 判断数组是不是有该元素

注册页面用户名注册时需判断数据库里是不是有该用户名,如何将提示显示到同一页面上?

迁移数据失败

判断数组中有该元素?

c#做winform时用户登陆系统后怎么在状态栏上显示当前用户的姓名