Flask-Admin视图未显示backref列

时间:2019-03-25 16:49:00

标签: python flask flask-admin

我有一个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关系。

1 个答案:

答案 0 :(得分:0)

在编写这个问题的过程中,我弄清楚了什么地方出了问题。我有一个用来提取给定用户输入的联系人的功能。该功能?

class User(UserMixin, db.Model):
    def contacts(self):
        return db.session.query(Contact).filter(Contact.user_id == current_user.id)

因此contacts函数与contacts关系静态变量冲突。重命名该函数后,该列将按预期显示。