1

私は大量のユーザー入力と処理を必要とする django プロジェクトに取り組んでおり、以下に示すようにモデルに保存するためにビュー内のデータをハードコーディングすることにうんざりしています。

mymodel = TheModel.objects.get(id=model.id)
mymodel.name = request.POST.get('name')
mymodel.zip  = request.POST.get('zip')
...
mymodel.save()

上記で使用した 2 つのモデル属性の代わりに、最大 25 個のモデル属性を保存する必要がある場合があります。

私は ajax を使用してフォームをシリアル化し、それらをビューに送信して保存しています。この問題を回避するための最もクリーンな方法を探しています。コードは少ないほど良いので、現在のコードの行数を大幅に短縮する方法があれば、モデルを再フォーマットするつもりです。

ありがとう

4

2 に答える 2

2

あなたは見てみたいかもしれませんModelForms

于 2012-11-19T22:13:19.817 に答える
0

この方法は機能しますが、機能させるにはモデルフィールド/ ajaxパラメーターを同時に追加するように注意する必要があります

与えられた:

フォーム1

<form method="post">
  <input name="parameter1" />
  <input name="parameter2" />
  <input name="parameter3" />
</form>

ネットワークを通過するデータがこの JSON のように見えるように JavaScript コードを記述します (フォームのシリアル化はおそらく機能しません)。

{ parameter1 : "some data", "parameter2" : "some data", parameter3 : "some data" }

次に、次のようなdjangoモデルがあります

class MyModel(models.Model):
    parameter1 = models.StringField()
    parameter2 = models.StringField()
    parameter3 = models.StringField()

次のようなコードで保存/更新できます。

params = dict(リクエスト.POST)

m = MyModel.objects.create(**params)

また

m = MyModel.objects.get(id=ID)
m.update(force_update=False,**params)

パラメータが一致しない場合、コードは失敗します。

于 2012-11-20T16:30:45.863 に答える