我試圖獲取字段的唯一值(在db列中是唯一的)。調用函數以獲取模型字段值
我的代碼(其它型號省略字段):
class PlatformUserChildren(models.Model):
dashboard = models.CharField('dashboard URL', max_length=64, unique=True, default=createDashboardCode(self))
def createDashboardCode(self):
stringCheck = False
while stringCheck is False:
newString = str(uuid.uuid4())[:32]
doesStringExist = newString in self.dashboard
if not doesStringExist:
stringCheck = True
return newString
我得到名「自我」是沒有定義是一個錯誤。
我應該被傳遞給函數,這樣我可以檢查數據庫列,以確保該值是唯一的 - 或者是有這樣做的一個內置的方式嗎?
我已經嘗試過或望着:
設置
unique=True
外地和使用default=uuid.uuid4
- 這讓我重複的值,並生成一個驗證錯誤(SO link)我中號意識到Django 1.8's UUID field,但是我是在1.7
將該字段設置爲unique = True應該注意:https://docs.djangoproject.com/en/1.8/ref/models/fields/#unique – cezar
謝謝cezar - 我已經試過了,它在嘗試保存重複值時會生成驗證錯誤。我想在此之前趕上它。 – AndrewO
是的,文檔也說它會拋出一個IntegrityError。這是在數據庫級完成的。如果您想要捕獲錯誤,則應該將代碼插入try和catch塊中以插入新條目。你能否提供產生錯誤的行(或行)? – cezar