问了半天 ai 也没解决。
class ApprovalStatus(PyEnum):
PENDING = 'pending'
APPROVED = 'approved'
REJECTED = 'rejected'
class Approval(db.Model):
id = db.Column(db.Integer, primary_key=True)
content_type = db.Column(db.String(50), nullable=False)
content_id = db.Column(db.Integer, nullable=False)
field_name = db.Column(db.String(50), nullable=False)
new_value = db.Column(db.Text, nullable=False)
status = db.Column(db.Enum(ApprovalStatus), default=ApprovalStatus.PENDING)
submitter_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
submit_time = db.Column(db.DateTime, default=current_time)
reviewer_id = db.Column(db.Integer, db.ForeignKey('user.id'))
review_time = db.Column(db.DateTime, default=current_time)
review_comment = db.Column(db.Text)
submitter = db.relationship('User', foreign_keys=[submitter_id])
reviewer = db.relationship('User', foreign_keys=[reviewer_id])
__table_args__ = (db.UniqueConstraint('content_type', 'content_id'),)
@property
def content(self):
model = getattr(models, self.content_type)
return model.query.get(self.content_id)
模型是这样,但是在 flask admin 访问审核这个栏目的时候,总是提示
LookupError: 'pending' is not among the defined enum values. Enum name: approvalstatus. Possible values: PENDING, APPROVED, REJECTED
和解哦。
结果检查,数据库的状态栏的值都是小写的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.