Flask-Admin 视图不显示 backref 列
Flask-Admin view not showing backref column
我有一个 Flask 应用程序,它使用 Flask-admin 进行仪表板和原始模型对象操作。该应用程序为登录该网站的用户提供 User
class,为每个用户输入的联系人提供 Contact
class。
我希望 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
显式显示 'user' 列,并且 DID 显示了一个列——但它是空的。 (我最终会使用它,但我现在将其关闭以简化操作。)
除了实现 __repr__()
并包括与链接两个模型对象的反向引用的关系外,我还需要做什么才能显示此列?我该如何调试为什么它没有出现?
我有一次确实注意到我在导出 class 上用反向引用声明了第二个关系,也称为 'user'
。 Export.user 正在工作!当我第一次注意到这一点时,我禁用了第二个关系,但这并没有修复 Contact.user 关系。
在写这个问题的过程中,我找出了错误的地方。我有一个函数,用于获取给定用户输入的联系人。那个函数?
class User(UserMixin, db.Model):
def contacts(self):
return db.session.query(Contact).filter(Contact.user_id == current_user.id)
所以 contacts
函数与 contacts
关系静态变量冲突。一旦我重命名该函数,该列就会按预期出现。
我有一个 Flask 应用程序,它使用 Flask-admin 进行仪表板和原始模型对象操作。该应用程序为登录该网站的用户提供 User
class,为每个用户输入的联系人提供 Contact
class。
我希望 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
显式显示 'user' 列,并且 DID 显示了一个列——但它是空的。 (我最终会使用它,但我现在将其关闭以简化操作。)
除了实现 __repr__()
并包括与链接两个模型对象的反向引用的关系外,我还需要做什么才能显示此列?我该如何调试为什么它没有出现?
我有一次确实注意到我在导出 class 上用反向引用声明了第二个关系,也称为 'user'
。 Export.user 正在工作!当我第一次注意到这一点时,我禁用了第二个关系,但这并没有修复 Contact.user 关系。
在写这个问题的过程中,我找出了错误的地方。我有一个函数,用于获取给定用户输入的联系人。那个函数?
class User(UserMixin, db.Model):
def contacts(self):
return db.session.query(Contact).filter(Contact.user_id == current_user.id)
所以 contacts
函数与 contacts
关系静态变量冲突。一旦我重命名该函数,该列就会按预期出现。