【发布时间】:2014-03-24 23:01:45
【问题描述】:
我目前正在使用 Flask 开始一个项目。我目前正在使用 Flask-Admin。
我尝试建立一个 2 级关系。对于每个“候选人”,我喜欢将一种语言和该语言的级别 (LanguageLevel) 关联起来。
这是我的models.py
from app import db
class Candidat(db.Model):
id = db.Column(db.Integer, primary_key=True)
firstname = db.Column(db.String(128))
lastname = db.Column(db.String(128))
birthdate = db.Column(db.DateTime)
languages = db.relationship("CandidatLanguage", backref="candidat")
def __repr__(self):
return '<Nom %r>' % self.lastname
class Language(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
def __repr__(self):
return '<Langues %r>' % self.name
class Languagelevel(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
def __repr__(self):
return '<Niveau : %r>' % self.name
class CandidatLanguage(db.Model):
id = db.Column(db.Integer, primary_key=True)
candidat_id = db.Column(db.Integer, db.ForeignKey('candidat.id'))
language_id = db.Column(db.Integer, db.ForeignKey('language.id'))
langguage_level_id = db.Column(db.Integer, db.ForeignKey('languagelevel.id'))
这是我的意见.py
from models import Candidat, Languagelevel, Language, CandidatLanguage
from flask.ext.admin import Admin, BaseView, expose
class MyView(BaseView):
@expose('/')
def index(self):
return self.render('adm-index.html')
admin = Admin(app)
admin.add_view(MyView(name='Hello'))
from flask.ext.admin.contrib.sqla import ModelView
admin.add_view(ModelView(Candidat, db.session))
admin.add_view(ModelView(CandidatLanguage, db.session))
admin.add_view(ModelView(Language, db.session))
admin.add_view(ModelView(Languagelevel, db.session))
我想要的是一个候选人表格,看起来像这样:
名字:____
姓氏:_____
语言:
-
语言的下拉菜单:
- 语言 1
- 语言 2
-
语言级别的下拉菜单:
- 1 级
- 2 级
对于一个“候选人”,一种语言只能与一个语言级别相关联。
我已经尝试过column_auto_select_related、column_display_all_relations,当然它们都没有像我想象的那样工作。当然这是我的错。
如果有人能告诉我实现目标的正确方法,那将非常有帮助。
提前致谢。
问候
【问题讨论】:
标签: python flask flask-sqlalchemy flask-wtforms flask-admin