2

Flask-Admin を使用しています。コンテンツ オブジェクトを更新すると、関連するルックアップ テーブル (content_products_table) 内のすべてのアイテムが削除されます。

したがって、コンテンツ オブジェクトとそのルックアップ テーブル (content_products_table) にマップされた 7 つの製品がある場合、更新時にコンテンツから製品へのすべてのマッピングが削除されます。

これは、更新中に製品リストが空であるために発生していると思いますが、実際には製品リストが 1000 項目になる可能性があるため、更新する前にロードしたくありません。単に更新しないだけです。更新時にフィールドを無視するように Flask-Admin または sqlalchemy を構成する方法があるように感じます。

以下の私のオブジェクトの例:

content_products_table = db.Table('content_products', db.Model.metadata,
                       db.Column('content_id', db.Integer, db.ForeignKey('content.id')),
                       db.Column('product_id', db.Integer, db.ForeignKey('product.id'))
                       )

class Content(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    products = db.relationship('Product', secondary=content_products_table)

オブジェクトを更新するコードの例:

form.populate_obj(model)
self._on_model_change(form, model, False)
self.session.commit()

私はこれらのプラットフォームの両方に慣れていないので、どんな情報でも役に立ちます。ありがとう!

編集

オブジェクトが更新されると、すべての関係が削除されることを更新したかったのです。したがって、テーブル コンテンツに対して 1 対多のテーブル ユーザーがいるとします。ユーザーを更新すると、Content テーブルで user_id が null に設定されます。

4

1 に答える 1

0

form_excluded_columns = ('製品')

オブジェクト プロパティを明示的に除外する必要があります。これは非常に危険なようです。

于 2014-01-04T05:45:02.023 に答える