В представлении Flask-Admin столбец backref не отображается - PullRequest
0 голосов
/ 25 марта 2019

У меня есть приложение 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, чтобы явно показать столбец 'user', и чтобы DID показывал столбец, но он был пустым.(В конечном счете, я буду использовать это, но сейчас я отключил его, чтобы упростить вещи.)

Помимо реализации __repr__() и включения отношения с обратным ссылком, связывающим два объекта модели, что мне нужносделать, чтобы этот столбец появился?Как я могу отладить, почему он не отображается?

В какой-то момент я заметил, что у меня было объявлено второе отношение с обратным ссылочным номером, также называемым 'user' в классе Export.Export.user работал!Когда я впервые заметил это, я отключил второе отношение, но это не исправило отношение Contact.user.

1 Ответ

0 голосов
/ 25 марта 2019

В процессе написания этого вопроса я выяснил, что не так. У меня была функция, которую я использовал для получения контактов, введенных данным пользователем. Эта функция?

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

Таким образом, функция contacts конфликтовала со статической переменной отношения contacts. После того как я переименовал функцию, столбец появился, как и ожидалось.

...