2013-10-15 1 views
4

Флажок начинающий здесь. У меня есть немного колба приложение, используя следующую модель:Flask-Admin ModelView не обрабатывает внешние ключи вправо (пустое падение)

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)) 

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

Answer create form with Flask-Admin

quickstart guide не охватывает модели с внешними ключевыми отношениями, и хотя есть implementation examples available, они не документируются вообще. Мне сложно понять, что действительно необходимо здесь и как это работает.

ответ

9

Выяснено это благодаря дружественному пользователю 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 
0

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

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