Flask-Admin ModelView неправильно обрабатывает внешние ключи (пустое выпадающее меню)

Новичок в фляге здесь. У меня есть небольшое приложение Flask, использующее следующую модель:

class Question(db.Model):
    __tablename__ = 'questions'
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

class Answer(db.Model):
    __tablename__ = 'answers'
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

    question_id = db.Column(db.Integer, db.ForeignKey('questions.id'))
    question = db.relationship("Question", backref="answers")

Я запускаю администратора, используя следующие строки в своем приложении:

admin = Admin(app)
admin.add_view(ModelView(Question, db.session))
admin.add_view(ModelView(Answer, db.session))

Теперь в форме создания для модели ответа у меня есть раскрывающийся список для вопроса, но он не заполнен должным образом:

Ответить на создание формы с помощью Flask-Admin

В кратком руководстве не рассматриваются модели с отношениями внешнего ключа, и хотя доступны некоторые примеры реализации, они вообще не документированы . Мне трудно понять, что здесь действительно необходимо и как это работает.


person Alexander Rechsteiner    schedule 15.10.2013    source источник


Ответы (2)


Выяснил это благодаря дружелюбному пользователю IRC по имени mattupstate! В модели должны быть реализованы __str__():

class Question(db.Model):
    __tablename__ = 'questions'
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

    def __str__(self):
        return self.text
person Alexander Rechsteiner    schedule 15.10.2013

Для тех, кто заинтересован, это решение, похоже, не сработало для меня. Что я сделал, чтобы исправить это, так это переопределить представление модели и явно удалить столбец, который мне не нужен (в данном случае тот, который касается аннотации relationship).

Вы можете найти мой файл models.py и переопределенные представления моделей здесь: репозиторий github или в этом суть

person Jeremy D    schedule 09.02.2014