django 数据库查询 filter 如何区分大小写

2014-10-12 14:43:07 +08:00
 larkifly
我试了__exact方法,但是没用,依然没有区分大小写
8867 次点击
所在节点    Python
8 条回复
zeq
2014-10-12 16:06:16 +08:00
你的代码是怎样的
raquelken
2014-10-12 17:34:39 +08:00
@larkifly
iexact
larkifly
2014-10-13 10:31:14 +08:00
@zeq
usable = CarCardList.objects.filter(car_card__iexact=code)
usable = CarCardList.objects.filter(car_card__exact=code)

class CarCardList(models.Model):
car_card = models.CharField(max_length=255, unique=True)
is_used = models.BooleanField(default=False)
get_from = models.ForeignKey(Merchant)
used_time = models.IntegerField(null=True)
user = models.ForeignKey(User, null=True)
def __unicode__(self):
return self.car_card

这两个方法都没用,环境是windows mysql
zeq
2014-10-13 11:16:23 +08:00
这是因为mysql的查询默认是不区分大小写的,你可以在匹配语句钱加上 BINARY 来区分大小写,例如

SELECT * WHERE BINARY title='django';

可以供你参考的一个方法是:

CarCardList.objects.extra(where=['binary car_card=%s'], params=[code])

https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra
y10n
2014-10-13 11:18:50 +08:00
数据库看看呢

如果类似 utf8_general_ci 改成 utf8_general_cs
__exact用的是=
__iexact用的是LIKE,效率也考虑下哦
iewgnaw
2014-10-13 11:32:44 +08:00
应该是数据库大小写不敏感,你直接用数据库命令查询试试看呢
wuxianglong
2014-10-13 16:13:25 +08:00
数据库不支持大小写敏感
larkifly
2014-10-13 16:13:49 +08:00
@iewgnaw
@y10n
@zeq
数据库配置错误

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/138452

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX