【问题标题】:Flask-Admin view not showing backref columnFlask-Admin 视图未显示 backref 列
【发布时间】:2019-08-15 23:39:06
【问题描述】:

我有一个 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__() 并包括与链接两个模型对象的反向引用的关系之外,我还需要做什么才能使此列出现?如何调试它为什么不显示?

我确实注意到,我在 Export 类上声明了第二个关系,该关系使用 backref 也称为 'user'。 Export.user 正在工作!当我第一次注意到这一点时,我禁用了第二个关系,但这并没有修复 Contact.user 关系。

【问题讨论】:

    标签: python flask flask-admin


    【解决方案1】:

    在写这个问题的过程中,我找出了问题所在。我有一个函数用于获取给定用户输入的联系人。那个功能?

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

    所以contacts 函数与contacts 关系静态变量发生冲突。一旦我重命名了函数,该列就会按预期出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多