2017-09-14 115 views
2

我有一個由Profile.objects.all()創建的查詢集。我想在模板中打印它,除了它的一行之外。我怎樣才能在模板中做到這一點?或者如果在模板中不可行,我該如何處理?如何從django中的另一個對象中移除一個對象? - python

+1

'Profile.objects.all()'是不是對象,這是一個'queryset'。您能否更具體地解答您的問題? – zaidfazil

+0

是的,你是對的,這是一個查詢集。我想打印除了其中一行以外的所有行。例如,如果數據庫表中有5行,我通過'Profile.objects.all()'將它們全部取出,但我想打印第1到第4行,並且我不想打印第5行。 – msln

+0

配置文件.objects.all()。exclude(...) –

回答

0

你可以使用.exclude()查詢集是這樣的:

YourObjet = Profile.objects.exclude(**kwargs) 

這Django的查詢將返回所有對象你的模型沒有排除對象。

你有Django文檔有:.exclude()

例子:

MyObject = Individu.objects.all() 

返回:

<QuerySet [<Individu: 1 19312STRASBOURG-402541 JUNGBLUTH Valentin>, <Individu: 2 18812STRASBOURG-797846 ARNOUD Laurent>, <Individu: 3 None TEST Test>, '...(remaining elements truncated)...']>

MyObject = Individu.objects.exclude(id="2") 

返回:

<QuerySet [<Individu: 1 19312STRASBOURG-402541 JUNGBLUTH Valentin>, <Individu: 3 None TEST Test>, '...(remaining elements truncated)...']>

+0

是不是可以在模板中做到這一點? – msln

+0

你必須在視圖中的上下文字典中添加'YourObject'。然後調用你的模板中的'YourObject'變量,它的工作原理 – Deadpool

+0

我添加了一個例子;) – Deadpool

1

首先Profile.objects.all()QuerySet。只需循環遍歷QuerySet中的每個實例,就可以打印__str__()方法。

如果你只是想忽略了最後一個,你可以像這樣,

{% for item in profiles %} 

    {% if not forloop.last %} 

     {{ item }} 

    {% endif %} 

{% endfor %} 
+1

這不是更好的答案。因爲它適用於最後一個對象,但對於ID爲10的對象具有1.000.000個對象。你必須使用'.exclude()'來做到這一點。 – Deadpool

+0

沒錯,當你有多個對象時,你不想顯示一些常見的條件。 – zaidfazil

相關問題