我需要在 Model Flask Sqlalchemy 中创建一个 cronstructor 吗?

问题描述 投票:0回答:1

我正在 Flask SqlAlchemy 中创建一些模型,但我对此有疑问。我是否需要创建一个构造体 init 或者我可以不使用它?

我可以这样做吗?:

class User(UserMixin, db.Model):
    __bind_key__ = 'user_database'

    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(120))
    last_name = db.Column(db.String(120))
    email = db.Column(db.String(120), unique=True, index=True)
    password_hash = db.Column(db.String(128))

    def __repr__(self):
        return f'{self.nome}'

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

或者这样做更好?:

class User(UserMixin, db.Model):
    def __init__(self, name, last_name, age, email, password_hash):
        self.name = name
        self.last_name = last_name
        self.age = age
        self.email = email
        self.password_hash = password_hash

    __bind_key__ = 'user_database'

    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(120))
    last_name = db.Column(db.String(120))
    email = db.Column(db.String(120), unique=True, index=True)
    password_hash = db.Column(db.String(128))

    def __repr__(self):
        return f'{self.nome}'

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)
python flask sqlalchemy flask-sqlalchemy
1个回答
0
投票

您不需要在 Flask SQLAlchemy 中为模型定义自定义构造函数,除非您有默认行为未涵盖的特定初始化需求。对于大多数应用程序来说,通过省略

__init__
方法来使用 SQLAlchemy 的内置构造函数是一种更干净、更直接的方法。

但是,如果您的应用程序需要它,定义自定义

__init__
方法也是完全可以接受的 - 只需记住在其中处理所有必要的初始化逻辑即可。

© www.soinside.com 2019 - 2024. All rights reserved.