Odoo中如何複製有唯一性約束的記錄?

2022-05-14 19:14:44 字數 712 閱讀 5829

如果為模型的字段新增了唯一性約束,那麼在記錄的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...