2015-12-02 121 views
0

我有我的數據庫與該值的用戶:Django的 - 查詢字符串精確匹配

booking_id -> 25DgW 

此字段在我的模型標記爲unique

booking_id = models.CharField(null=False, unique=True, max_length=5, default=set_booking_id) 

但現在當我查詢了用戶是這樣的:

>>> User.objects.get(booking_id='25dgw') # I think this should throw a DoesNotExist exacption 
<User: John Doe> 

即使我做的:

>>> Partner.objects.get(booking_id__exact='25dgw') 
<User: John Doe> 

我需要一個查詢,只有當代碼的寫入方式與保存在數據庫中的方式完全相同時,纔會返回用戶:25DgW而不是25dgw

我該如何查詢?

+0

萬一你不知道,這是MySQL的問題。使用ORM來實現這一點並不容易。原始的sql可能會這樣做:http://stackoverflow.com/questions/7857669/mysql-case-sensitive-query –

+0

@ShangWang所以'__exact'是什麼?有沒有辦法(很難而且不容易)做到這一點? – Gocht

+1

將您的mysql歸類更改爲區分大小寫。 '__exact'意味着Django應該告訴數據庫你需要完全匹配。數據庫排序規則設置數據庫是否應該考慮'bob'和'Bob'完全匹配。 http://stackoverflow.com/questions/5629111/how-can-i-make-sql-case-sensitive-string-comparison-on-mysql顯示了一些方法來做到這一點,但它是一個很大的話題。 –

回答

0

這似乎工作:

qs.filter(booking_id__contains='25DgW').first()