我有一个Flask应用,该应用使用Flask-admin来控制仪表板和原始模型对象。该应用程序为登录网站的用户提供User
类,为每个用户输入的联系人提供Contact
类。
我希望Flask-admin的“联系人”选项卡中的每一行都显示输入它的用户的电子邮件。我已经设置了这样的代码:
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
contacts = db.relationship('Contact', backref='user')
# [...]
def __repr__(self):
return f'{self.email}'
class Contact(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
# [...]
在此设置中不显示“用户”列。我不会使用column_exclude_list
将其排除。我尝试使用column_list
来显式显示“用户”列,而DID则显示一列,但该列为空。 (我最终将使用此功能,但为了简化操作,我现在将其关闭。)
除了实现__repr__()
并包括与链接两个模型对象的backref的关系之外,我还需要做些什么才能使此列显示?如何调试为什么它不显示?
我确实注意到我在Export类上有第二个关系,该第二个关系用backref声明,也称为'user'
。 Export.user正在工作!当我第一次注意到这一点时,我禁用了第二种关系,但这并不能解决Contact.user关系。
答案 0 :(得分:0)
在编写这个问题的过程中,我弄清楚了什么地方出了问题。我有一个用来提取给定用户输入的联系人的功能。该功能?
class User(UserMixin, db.Model):
def contacts(self):
return db.session.query(Contact).filter(Contact.user_id == current_user.id)
因此contacts
函数与contacts
关系静态变量冲突。重命名该函数后,该列将按预期显示。