我有一个Flask Admin部分,它使用SQLAlchemy Models来构建表单。
我无法弄清楚如何进行“如果找不到外键,插入新记录”这样的操作。
例如。采用以下SQLAlchemy模型
class Room(Base):
__tablename__ = 'rooms'
id = sqlalchemy.Column(sqlalchemy.Integer,
primary_key=True,
autoincrement=True
)
description = sqlalchemy.Column(sqlalchemy.String(256))
name = sqlalchemy.Column(sqlalchemy.String(32))
phone_numbers = relationship('RoomPhoneNumber',
backref='room')
intercom_numbers = relationship('RoomIntercomNumber',
backref='room')
class RoomPhoneNumber(Base):
"""
A phone number assigned to a given room.
"""
__tablename__ = 'roomextensions'
id = sqlalchemy.Column(sqlalchemy.Integer,
primary_key=True,
autoincrement=True
)
number = sqlalchemy.Column(sqlalchemy.String(25))
room_id = sqlalchemy.Column(sqlalchemy.Integer,
sqlalchemy.ForeignKey(Room.id)
)
Admin ModelView
class RoomAdmin(sqla.ModelView):
def is_accessible(self):
return login.current_user.is_admin
column_auto_select_related = True
column_searchable_list = ('name', 'description')
column_display_pk = True
column_list = ('id', 'description', 'name', 'phone_numbers', 'intercom_numbers')
form_columns = ['description', 'name', 'phone_numbers', 'intercom_numbers']
Room Admin Model不允许我输入新的RoomPhoneNumber
我希望能够从Room Admin模型中输入电话号码,如果找不到,只需将其插入当前生成的房间ID,无需转移到RoomPhoneNumberAdmin
页面
Flask-Admin中是否有配置我缺少,或者这是一个糟糕的数据库设计问题?
感谢阅读,如果需要,可以发布更多信息。