1

フィルタされたモデルインスタンスリストを表示し、ユーザーがその一部のフィールドを更新したり、フォームとして新しいフィールドを追加したりできるページがあります。

すべての入力データを削除して再保存したり、各データを比較して編集済み/新しいフィールドとエンティティを保存したりするための賢い方法が何であるかを知りたいです。

私はこれらの値を保存するためにpostgresを使用しており、このフォームには約20のエントリを表示していることを覚えておいてください。

4

1 に答える 1

11

QuerySetオブジェクトにはupdate()メソッドがあります。これはieで使用されます。変更リストから選択した複数のオブジェクトを一括更新するための管理パネル。これは、 djangoの公式ドキュメントにあるメソッドリファレンスです。

それの使い方:

更新するモデルを使用してクエリセットを作成するだけです(MyModelに「my_field」という名前のフィールドがあると仮定します)。

qs = MyModel.objects.all()
qs.update(my_field=value) 

それだけです-update()メソッドはsave()メソッドのようなシグナルを送信しないことを忘れないでください-データベースに直接クエリを実行するだけです。

「フォームを介してフィールドを追加する」については、正しく理解できたかどうかわかりませんか?関連するモデルを追加したいですか、それともデータベースのモデルテーブルにフィールドを動的に追加したいですか?

関連するモデルを追加する場合は、InlineFormset(http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-form)を使用してください。処理は非常に簡単です。それ以外の場合は、ここで説明するように、モデルの_metaにフィールドを追加する必要があります。モデルにカスタムフィールドを動的に追加する方法

于 2010-09-23T14:08:59.353 に答える