微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用pymongo将自动生成的值添加到Flask中的数据库

如何解决使用pymongo将自动生成的值添加到Flask中的数据库

我有一个代码,可将名称和电子邮件插入pymongo数据库。这是我的代码

from flask import Flask
from flask_admin import Admin,BaseView,expose
from flask_admin.contrib.pymongo import ModelView
from wtforms import Form
from pymongo import MongoClient
from wtforms import TextField,PasswordField
from uuid import uuid1
import secrets

# Create secret_key -> secret_key = str(uuid1())
# Create access_key -> access_key = secrets.token_urlsafe(8)

client = MongoClient()
db = client['AdminDB']

class UserForm(Form):
    name = TextField('Name')
    email = TextField('Email')

class UserView(ModelView):
    column_list = ('name','email')
    form = UserForm

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecretKey'
admin = Admin(app,name='My App Admin')
admin.add_view(UserView(db['users']))

if __name__ == "__main__":
    app.run(debug=True)

我希望 secret_key access_key 本质上应该自动生成。我在数据库集合中的预期条目如下。

_id:5f6f548d3cfa158e2ec35f42
name:"name"
email:"user@email.com"
secret_key: "b0f4f2ad-0009-11eb-8ac8-107d1a262dee"
access_key: "9LYZ8UYokGA"

如何在代码中实现?谢谢

解决方法

覆盖视图的on_model_change。例如,要在新创建模型时设置值:

class UserView(ModelView)

    def on_model_change(form,model,is_created):

        if is_created:

            model.secret_key = str(uuid1())
            model.access_key = secrets.token_urlsafe(8)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。