2016-05-30 63 views
-1

我真的很喜歡django模板語言,但是當涉及從模板傳遞多個字符串到視圖時,我沒有任何線索。因此我想弄清楚使用哪一種現代工具。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的實例:

<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> 

request.POST我將有富名稱作爲字符串。我想將整個實例發送回一個視圖來處理它。它也可以發送foo.id。但我不知道如何將foo.id放入模板中,而不顯示在foo.name旁邊,而是作爲request.POST中的變量發送。

除了這個問題,我想有一個建議,以瞭解什麼技術,對於這樣的任務(JSON,阿賈克斯,...)

+1

你真的問傳遞的東西從模板到視圖?或者相反呢? –

+0

我現在的問題是,我無法弄清楚如何從模板發送更多的信息,然後模板'{{variables}}'作爲字符串發送。當然,我可以發送一大堆變量來使用它們來過濾搜索到的對象,但在我的情況下,我使用的對象的名稱和那些可以是dublicates的瓷磚(我其實現在不知道如何隱藏pk併發送郵件以及...) –

+0

你將需要更具體的關於你想傳遞什麼,以及你爲什麼認爲你不能在Django做到這一點。 –

回答

0

沒有看到什麼foo對象實際上的樣子,我要去假設發生以下情況:

  1. 您只在模板中指定foo
  2. 因爲這就是你指定的全部內容,所以Django會嘗試以字符串形式打印對象,調用對象的__str__魔法或__unicode__

如果你只想打印名稱,然後僅打印ID,只是專門只打印那些屬性,而不是僅僅foo,如:

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

是的,我也是這樣做的,但是然後foo.id會顯示在自動填充字段中。我想避免這一點。只是應該顯示名稱,但當涉及到發佈(通過點擊圖塊)更多信息時,應該發送一個罕見的字符串。這是我試圖解決的問題 –

+0

爲什麼foo.id會在自動填充字段中?我假設你正在使用某種類型的jQuery插件來提供自動完成功能?什麼庫/插件? –

+0

不,我用''創建了一個自動填充字段,並且在那裏我將所有的「foos」{{for foo in foos%}}放到'