2017-04-20 73 views
-1

我試圖把我的查詢集的一些值放在html模板中。 這是我的html:TemplateSyntaxError無法解析餘數:''from'form.filter()'

<ul class="dropdown-menu"> 
       {% for i in form.filter(university="UPF - Universitat Pompeu Fabra") %} 
       <li ><a href="#">{{ i.degree }}</a></li> 
       <li role="separator" class="divider"></li> 
       {% endfor %} 
      </ul> 

但是當我負責的頁面,它推出這個錯誤:

Exception Type: TemplateSyntaxError 
Exception Value: Could not parse the remainder: '(university="UPF - Universitat Pompeu Fabra")' from 'form.filter(university="UPF - Universitat Pompeu Fabra")' 

在外殼印有查詢集的值是下列之一: enter image description here

My views is the following one: 

    from .models import Universitys 

def index(request): 
    universitys = Universitys.objects.all() 
    context = {"form":universitys} 
    return render(request,"index.html", context) 

型號:

class Universitys(models.Model): 
data = models.DateTimeField('date created', auto_now_add=True) 
university = models.CharField(max_length=50) 
degree = models.CharField(max_length=50) 
degreeMark = models.DecimalField(decimal_places=3,max_digits=5) 

def __str__(self): 
    return '%s %s %f' % (self.university, self.degree, self.degreeMark) 

如果你能幫助我,我會很感激。

回答

0

Django默認模板引擎不允許這種模板內的操作。這樣做的推薦方法是在上下文中添加一個上下文變量以及該查詢集的結果,並在模板的forloop上使用該變量。喜歡的東西:

def index(request): 
    universities = Universities.objects.filter(university="UPF - Universitat Pompeu Fabra") 
    context = {"universities": universities} 
    return render(request, "index.html", context) 

,並且模板:

<ul class="dropdown-menu"> 
     {% for i in universities %} 
     <li ><a href="#">{{ i.degree }}</a></li> 
     <li role="separator" class="divider"></li> 
     {% endfor %} 
    </ul> 

如果你只使用degree場,你可以做的另一件事就是讓只在查詢集此值。所以,我也將改變universities查詢集到:

universities = Universities.objects.filter(university='UPF - Universitat Pompeu Fabra').values_list('degree', flat=True) 

更多關於values_list,請參閱docs

+0

你讓我使用程度的另一種方式是正確的,但在模板中我不能使用它,在我解釋的答案中問題。 –

0

是的,我明白,你解釋我的解決辦法,但我需要過濾的程度誰取決於你選擇的大學。出於這個原因,我將視圖中的所有對象都傳遞給可以按照我喜歡的方式處理數據庫,但我不知道在django模板中實現這種操作是不可能的。

我再次解釋我的問題,看看你是否看到其他解決方案。我通過了帖子中解釋的模型,因爲我正在爲我的應用做一個下拉菜單或菜單選擇,而且我需要過濾我從之前選擇的大學中選擇的學位。

模板以下之一:

<select id="font"> 
    {% for e in form %} 
     <option>{{ e.university }}</option> 
     <li role="separator" class="divider"></li> 
    {% endfor %} 
    </select> 
    <select id="font"> 
    {% for i in form.filter(university="UPF - Universitat Pompeu Fabra") %} 
     <option>{{ i.degree }}</option> 
     <li role="separator" class="divider"></li> 
    {% endfor %} 
    </select> 
    <p><label for="basic-url">2. Crea tu escenario en las PAU</label></p> 

我覺得一個可能的解決方案將是一個POST方法先用大學,取決於選擇的,在視圖中做一個objects.filter()並再次傳遞另一個上下文到模板。我不知道這個解決方案,有可能,還有另一種方法可以做得更好..

+0

最後我用ajax解決了這個問題。 –

相關問題