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