如何使两个属性在一起是唯一的?



我有一个用户类,看起来像这样:

class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(15), unique=True, nullable=False)
last_name = db.Column(db.String(15), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
def __repr__(self):
return f"User('{self.first_name}', '{self.last_name}', '{self.email}')"

如你所见,first_namelast_name必须是唯一的,但这并不是我真正想要的。相反,我希望全名是唯一的,所以first_namelast_name在一起必须是唯一的。我该怎么做呢?

您可以使用声明性表配置并定义一个UNIQUE约束。但是,请记住,可能有几个人的姓和名的组合相同。

class User(db.Model, UserMixin):
__table_args__ = (db.UniqueConstraint('first_name', 'last_name'),)
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(15), nullable=False)
last_name = db.Column(db.String(15), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
def __repr__(self):
return f"User('{self.first_name}', '{self.last_name}', '{self.email}')"

最新更新