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')
通過燒瓶管理員創建的
面積記錄期間
類型字段是必需的,但如果類型表是空的,沒有辦法任何信息添加到數據庫。由於backref到類型表,使得該字段是必需的,但是沒有類型表中的任何內容,flask-admin不允許向Area表中添加任何內容。 flask-admin也不允許向Area表添加任何內容,因爲頁面上需要類型。
我在主題上找不到任何東西。有一些話題討論了多對多關係的解決方法,但這是最簡單的一對多關係,根據我的理解,這些關係應該是開箱即用的。
我想通了,如果我添加類型下面積模型inline_models話,我會看到一個按鈕「添加類型」上創建區域頁,但如果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'))