flask-admin Пометки db.relationship полей model views, если требуется, поэтому нет возможности добавить запись, если таблица, к которой идет связь, пуста.flask-admin налагает обязательный атрибут на отношения
Пример:
class Type(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True, index=True)
area_id = db.Column(db.Integer, db.ForeignKey("area.id", onupdate='CASCADE', ondelete='CASCADE'), nullable=False, index=True)
description = db.Column(db.Text)
class Area(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True, index=True)
description = db.Column(db.Text)
types = db.relationship('Type', backref='Area', lazy='dynamic', cascade='all, delete-orphan')
типа поля требуется при создании зоны записи через опоку-администратор, но если типа таблица пуста, нет никакого способа, чтобы добавить какую-либо информации в база данных. flask-admin не позволит ничего добавить в таблицу Area из-за backref, чтобы напечатать таблицу, которая делает нужное поле, но в таблице Type еще ничего нет. flask-admin не позволит ничего добавить в таблицу Area, так как поле типа требуется на странице.
Я ничего не мог найти по этому вопросу. Есть несколько тем, обсуждающих обходные пути для отношений «многие ко многим», но это самые простые отношения «один ко многим», которые, как я понимаю, должны просто работать из коробки.
Я понял, что если я добавлю Type в inline_models под моделью Area, тогда я открою кнопку «Добавить типы» на странице создания области, но если сам inline_model имеет отношение, это тоже не помогло бы, из-за по той же причине.
class ModelViewArea(ModelView):
inline_models = (models.Type,)
admin.add_view(ModelViewProductArea (models.Area, db.session, name="Area", category='Product'))
admin.add_view(ModelViewProductType (models.Type, db.session, name="Type", category='Product'))