如果為模型的字段新增了唯一性約束,那麼在記錄的form檢視功能選單上選擇「複製」時就會報錯。
那麼我們要在維持唯一性的前提下,保留複製功能,則只能重寫模型的copy方法,在方法中為有唯一性約束的字段新增辨別性內容,使得紀錄可以被成功複製(當然,新紀錄中唯一性約束的字段時修改後的值,仍然唯一)
def copy(self, default=none):default = dict(default or {})
#統計資料庫中已有多少個本紀錄的副本
copied_count = self.search_count(
[('字段', '=like', u"copy of {}%".format(self.欄位))])
#為副本中的字段值新增尾部修飾,維持唯一性
#第一次複製:cpoy of 原字段值
if not copied_count:
new_欄位 = u"copy of {}".format(self.欄位)
#第n次複製:copy of 原字段值(次數)
else:
new_欄位 = u"copy of {} ({})".format(self.name, copied_count)
#呼叫父類複製函式,並把新預設值傳入
default['欄位名'] = new_欄位
return super(類名, self).copy(default)
Oracle唯一性約束和唯一性索引的關係
唯一性約束通過唯一性索引來實現?我覺得這說法不對。對於唯一性約束,索引是必須存在的,唯一性約束本質上是通過索引來保證的,但不一定是唯一性索引。唯一性約束允許有null值,唯一性約束的列可允許有多個null值。唯一性約束通過btree索引實現,而btree索引是不會包含null值,但使用null值過濾...
mysql如何修改唯一性約束跟主鍵約束
一 如何新增主鍵約束和唯一性約束 1 新增主鍵約束 執行語法 alter table tablename add primarykey column name 千萬別忘了加 同時要保證表結構中沒有其他的主鍵,因為乙個表中只能有乙個主鍵。2 新增唯一性約束 執行語法 alter table table...
mysql 唯一約束 Mysql 唯一性約束新增
一 單列唯一約束 1.建表時加上唯一性約束 create table t user id int 11 not null auto increment,username varchar 18 not null unique,password varchar 18 not null,primary k...