class Parent(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120))
def __repr_(self):
return '<Parent %r>' % (self.name)
admin.add_view(ModelView(Parent, db.session))
class Child(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120))
parent = db.Column(db.Integer, db.ForeignKey(Parent))
admin.add_view(ModelView(Child, db.session))
你好 -
上面的代码是我正在尝试创建的flask-admin页面的示例。目标是在Child的创建页面上有一个名称文本框和一个下拉选择父项。
通过上述设置,只有名称字段。缺少父下拉框。
任何想法如何实现?
答案 0 :(得分:16)
您可能需要通过子类为flask-admin指定一些其他选项:
class ChildView(ModelView):
column_display_pk = True # optional, but I like to see the IDs in the list
column_hide_backrefs = False
column_list = ('id', 'name', 'parent')
admin.add_view(ChildView(Parent, db.session))
答案 1 :(得分:13)
如果将Child
类更改为:
class Child(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120))
parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))
parent = db.relationship('Parent', backref=db.backref('children', lazy='dynamic'))
我对此并不了解,我不知道你是否需要后退参考,但这个设置适用于Flask-Admin。
答案 2 :(得分:0)
这是一个全面的解决方案,不需要手动维护。
from sqlalchemy import inspect
class ChildView(ModelView):
column_display_pk = True # optional, but I like to see the IDs in the list
column_hide_backrefs = False
column_list = [c_attr.key for c_attr in inspect(Child).mapper.column_attrs]
admin.add_view(ChildView(Child, db.session))
答案 3 :(得分:0)
就它的价值而言,这里列出的解决方案都不适合我。我面临的问题是外键未显示在Flask-Admin中。
这是他们出现的原因:
class CustomModelViewName(ModelView):
can_delete = True
column_hide_backrefs = False
column_list = ["column_name", "column_name", "etc", "etc", "etc"]
column_searchable_list = ["column_name"]