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 关系静态变量冲突。一旦我重命名该函数,该列就会按预期出现。