亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Flask-Sqlalchemy:每次提交模型的新實例時如何調用函數?

Flask-Sqlalchemy:每次提交模型的新實例時如何調用函數?

牧羊人nacy 2023-05-16 14:27:05
每次提交新用戶時,我都想創建一個新的隨機用戶 ID。為此,我使用的格式是:USR-<token>令牌是由這個函數制作的:import stringimport secretsdef make_token():    set = string.ascii_letters+string.digits    while True:        token = ''.join(secrets.choice(set) for i in range(6))        if(any(c.islower() for c in token) and           any(c.isupper() for c in token) and           sum(c.isdigit() for c in token)>=3 ):           break    return token此函數將在此數據庫模型中調用:class User(db.Model):    usrid = db.Column(db.String(10), primary_key=True,                        default="USR-{}".format(make_token()))    usrnm = db.Column(db.String(20), unique=True, nullable = False)我希望令牌每次都是新的。但是現在如果我提交兩個用戶對象,它會給我一個Constraint Failed : Unique錯誤。另外,我正在使用 SQLite 進行測試,如果這有什么不同的話。該模型比這更大,但對于這個問題,我認為只有這些部分是相關的。
查看完整描述

1 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

我認為你需要將make_token函數作為default參數傳遞,而不是它的返回值。

所以你可以嘗試讓你的make_token函數在字符串前面加上“USR-”:

    # ...
    return "USR-" + token

然后將該函數作為default參數傳遞:

    usrid = db.Column(db.String(10), primary_key=True,
                        default=make_token)


查看完整回答
反對 回復 2023-05-16
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號