2015-12-30 37 views
0

我想根據模型的最後一個id在Django模型中插入一行。我的查詢是喜歡,Django模型在查詢中讀取和創建?

Order.objects.create(group=123131, identifier=friendly_invoice.encode(Order.objects.last().id)) 
# group and identifier are unique together 

我登錄查詢如圖http://www.dabapps.com/blog/logging-sql-queries-django-13/

(0.016) SELECT `order`.`id`, `order`.`group`, `order`.`identifier`, `order`.`created`, `order`.`modified` FROM `order` ORDER BY `order`.`id` DESC LIMIT 1; args=() 
DEBUG 2015-12-30 12:16:21,881 (0.016) SELECT `order`.`id`, `order`.`group`, `order`.`identifier`, `order`.`created`, `order`.`modified` FROM `order` ORDER BY `order`.`id` DESC LIMIT 1; args=() 
DEBUG 2015-12-30 12:16:21,881 (0.016) SELECT `order`.`id`, `order`.`group`, `order`.`identifier`, `order`.`created`, `order`.`modified` FROM `order` ORDER BY `order`.`id` DESC LIMIT 1; args=() 
(0.000) INSERT INTO `order` (`group`, `identifier`, `created`, `modified`) VALUES ('123131', '378ETGY', '2015-12-30 06:46:21', '2015-12-30 06:46:21'); args=[u'123131', '378ETGY', u'2015-12-30 06:46:21', u'2015-12-30 06:46:21'] 
DEBUG 2015-12-30 12:16:21,881 (0.000) INSERT INTO `order` (`group`, `identifier`, `created`, `modified`) VALUES ('123131', '378ETGY', '2015-12-30 06:46:21', '2015-12-30 06:46:21'); args=[u'123131', '378ETGY', u'2015-12-30 06:46:21', u'2015-12-30 06:46:21'] 
DEBUG 2015-12-30 12:16:21,881 (0.000) INSERT INTO `order` (`group`, `identifier`, `created`, `modified`) VALUES ('123131', '378ETGY', '2015-12-30 06:46:21', '2015-12-30 06:46:21'); args=[u'123131', '378ETGY', u'2015-12-30 06:46:21', u'2015-12-30 06:46:21'] 

這是創建以dB兩個SQL查詢。我相信如果這個代碼是由兩個並行請求執行的話,這將會出錯。

如何以安全的方式編寫此查詢?

+0

我認爲我們需要對'friendly_invoice'一些更多的信息解決了這個。 – khajvah

+0

這是一個將id加密成字母數字值的函數。它隱藏用戶的ID並向他/她顯示一個字母數字字符串。 – Netro

+0

你每次需要進行查詢時都解碼和編碼嗎?我在這裏感覺到更大的問題。 – khajvah

回答