我什至在制定這個問題的標題時遇到了問題 :) 我是所有編碼方面的初學者,但我喜歡通過 Django 專案學習。通常我可以通過搜索來一點一點地解決我的問題,但是我在下面失敗了并且卡住了,盡管我確信有一個簡單的解決方案......在下面我在我的 html 代碼中執行以下操作:
第 1 步。從我的觀點來看,我得到了按欄位“區域”排序的背景關系“程式” ,并使用它為每個區域列出了一個使用 for 回圈的屬于該區域的程式串列。
第 2 步。在每個程式的表的第二列中,我顯示了該特定程式的資料庫中的合作伙伴總數(使用 related_name ' PartofProgramme ' 作為外鍵)。到目前為止一切都很好,一切都很好。
第 3 步。當我在此階段檢查時,“ program.Partof Programme.all ”包含一個查詢集,如下所示:程式。對于表中的第三列,我想顯示這些合作伙伴的數量,狀態為__代碼值 = 'active'。我如何從我的 html 模板訪問它,現在它在下面顯示“##get count of active partners##”?
從我下面的代碼中截取。
index_alt.html
{% regroup programmes by region as region_list %}
[…]
<div class="tab-content">
{% for region in region_list %}
[...]
<tr>
<th scope="col">Programmes in {{region.grouper }} </th>
<th scope="col">Registered partners</th>
<th scope="col">Active</th>
</tr>
</thead>
<tbody>
{% for programme in region.list|dictsort:"programme" %}
<tr>
<th scope="row">{{ programme }}</th> #name of programme in region in rows
<td>{{ programme.PartofProgramme.all.count }}</td> #number of registered partners in programme
<td> {{ ##get count of active partners## }}</td> #get number of partners with status__code=’active’
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endfor %}
視圖.py
class DevView(generic.ListView):
template_name = "maindb/index_alt.html"
model = Programme
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['programmes'] = Programme.objects.all().order_by('region')
return context
模型.py
class Region(models.Model):
region = models.CharField(max_length=200)
class Programme(models.Model):
programme = models.CharField(max_length=200)
region = models.ForeignKey('Region', on_delete=models.SET_NULL, null=True, blank=True, related_name="regions", verbose_name="Region")
class TagStatus(models.Model):
code = models.CharField(max_length=20)
field = models.CharField(max_length=100, null=False)
class Partner(models.Model):
name = models.CharField(max_length=200)
programme = models.ForeignKey('Programme', on_delete=models.SET_NULL, null=True, blank=True, related_name="PartofProgramme")
status = models.ForeignKey('TagStatus', on_delete=models.SET_NULL, null=True, blank=True)
uj5u.com熱心網友回復:
我認為簡單的方法是在get_context_data.
`context['active_partners'] = Programme.PartofProgramme.filter(status__code="active")`
另一種方法是使用自定義過濾器。您可以在此處閱讀更多資訊: https ://docs.djangoproject.com/en/4.0/howto/custom-template-tags/#registering-custom-filters
例子:
@register.filter
def status_active_count(partners):
return partners.filter(status__code="active").count()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/472045.html
