2016-05-30 4 views
-1

私は本当にdjangoテンプレート言語が好きですが、テンプレートからビューへの文字列以上のものを渡す場合は手がかりがありません。したがって、どの現代的なツールを使用するかを把握したいと思います。Djangoテンプレートからビューへのオブジェクトの受け渡し

私はまだこのようなタスクに取り組むために何をお勧めしますか、それとも私がまだ発見していないジャンゴの方法はありますか?

編集:私はオブジェクトのクエリについて知っています。私が探しているのは、すべての属性を持つオブジェクトを戻すことです。

のfooの単純なモデル:

class foo(models.Model): 
    name = models.CharField(max_length=75) 
    categories = models.ManyToManyField(Category) 

    def __str__(self): 
     return self.name 

私はテンプレートにfoos = foo.objects.all()経由でインスタンスを渡しています。

<form method="POST" action="/path/"> 
    {% csrf_token %} 
    <input type="text" class="btn btn-default" name="foo" list="foos"> 
    <datalist id="foos"> 
    {% for foo in foos %} 
     <option value="{{ foo }}"> 
    {% endfor %} 
    </datalist> 
    <button class="btn btn-default">send</button> 
</form> 

そして、すべてのfooのインスタンスのタイルなど:request.POST

<form method="POST" action="/path"> 
    {% csrf_token %} 
    <ul class="wrapper"> 
    {% for category_ in categories %} 
     {% for foo in foos %} 
      {% if category_ in foo.categories.all %} 
      <input name="foo" type="submit" value="{{ foo }}" class="box box_text"> 
      {% endif %} 
     {% endfor %} 
    {% endfor %} 
    </ul> 
</form> 

私がfooを持っていますオートコンプリートを持つテキストフィールドとして、ここで

:テンプレート彼らはこのように処理されたばかり文字列としての名前。私はそれを処理するためにビュー全体にインスタンス全体を戻したいと思う。また、foo.idを送信するだけでうまくいくでしょう。しかしfoo.idfoo.nameの横に表示せずにテンプレートに入れる方法はわかりませんが、request.POSTに変数として送信します。その問題に加えて

私は行くよ、同じようfooオブジェクトが実際に見えるものを見なければ、このようなタスクのために学ぶためにどのような技術アドバイス(JSON、アヤックス、...)を

+1

あなたは本当に物事を渡すために求めていますテンプレートからビューへ?それとももう一方の方法ですか? –

+0

今私の問題は、テンプレートからさらに情報を送信して、文字列として送信するテンプレート '{{variables}}'をどのように送信するのか分かりません。もちろん、私はそれらを使って検索されたオブジェクトをフィルタリングするための変数をたくさん送ることができますが、私の場合はオブジェクトの名前を持つタイルがあり、それらは公開される可能性があります(実際にはどうやってpk投稿としても送信してください...) –

+0

あなたは、あなたが渡したいものと、あなたがDjangoでそれをすることができないと思う理由について、より具体的にする必要があります。 –

答えて

0

持っていると思います次のようなことが起こると仮定してください:

  1. テンプレート内にはfooしか指定されていません。
  2. Djangoはオブジェクトの文字列としてオブジェクトの__str____unicode__のいずれかを呼び出して印刷しようとします。

あなただけの名前を印刷し、その後ばかり、具体的に示すように、だけではなくfooの、属性のみを印刷し、IDを印刷したい場合:

<option value="{{ foo.id }}">{{ foo.name }}</option> 
+0

はい私もこれを行いましたが、foo.idはautocompleteフィールドに表示されます。私はちょうどこれを避けたい。ちょうど名前が表示されるはずですが、(タイルをクリックして)ポストをクリックすると詳細情報が表示され、まれな文字列を送信する必要があります。これは私が解決しようとしている問題です –

+0

なぜfoo.idはオートコンプリートフィールドにあるのですか?私はオートコンプリートを提供するためにいくつかのタイプのjQueryプラグインを使用していると仮定していますか?どのライブラリ/プラグインですか? –

+0

いいえ私は ''というオートコンプリートフィールドを作成しました。そこにはすべての "foos" '{%for foo for%}'を '

関連する問題