5

ヘビークライアントアプリで少し遊んでいます。

このモデルがあると想像してください:

class Category(models.Model):
    name = models.CharField(max_length=30)
    color = models.CharField(max_length=9)

ノックアウトjsを使用しています(ただし、これは重要ではないと思います)。カテゴリのリスト (observableArray) があり、新しいカテゴリを作成したいと考えています。

新しいオブジェクトを作成し、それをリストにプッシュします。ここまでは順調ですね。

私のデータベースに保存するのはどうですか?私はtastypieを使用しているため、「/api/v1/category/」にPOSTを作成でき、ほら、新しいカテゴリがDBにあります。

わかりましたが... ページを更新していないので... 新しいカテゴリを更新したい場合はどうすればよいですか?

つまり、カテゴリを取得するときに ID を保存できるので、'/api/v1/category/id' に入力して変更を保存できますが、... 新しいカテゴリを作成すると、DB が割り当てられますID ですが、私の JavaScript はその ID をまだ認識していません。

つまり、ワークフローは次のようになります。

get を作成 > 既存のオブジェクトを (ID とともに) リストにプッシュ > 新しいカテゴリを作成 > リストにプッシュ > 既存のカテゴリを保存 (カテゴリには javacript に ID がありません) > カテゴリを編集 > 方法変更を保存しますか?

それで、私の質問は、一般的なパスは何ですか? カテゴリを送信してIDを何らかの方法で取得し、それをjsのオブジェクトに割り当てて、後で変更できるようにすることを考えました。問題は、サーバーに POST を実行しても何も返されないことです。

過去に私はそのようなことをしました。投稿を介してオブジェクトを送信し、保存し、取得して返送し、成功メソッドでIDを取得してjsオブジェクトに割り当てました。

ありがとう!

4

1 に答える 1

9

Tastypieには、always_return_dataリソースのオプションが付属しています。

リソースの場合always_return_data=True、APIは常にPOST / PUTで完全なオブジェクトイベントを返すため、新しいオブジェクトを作成するときに、同じリクエストで作成されたIDを取得できます。

次に、AJAXからの応答を読み取り、JSONをデコードできます(ノックアウトについてはまだわかりません)。

ドキュメントを参照してください:http ://readthedocs.org/docs/django-tastypie/en/latest/resources.html?highlight = always_return_data#always-return-data

お役に立てれば

于 2012-01-13T23:19:28.950 に答える