[英]Django template tags filter by slug
我在組織和事件之間有着多對一的關系。 一個組織可以發生許多事件。 我有一個模板,用於顯示每個人都能看到的按城市過濾的事件。 但是我希望組織詳細信息視圖顯示僅屬於特定組織的事件。
models.py
class Organization(models.Model):
name = models.Charfield(max_length=27)
slug = models.SlugField(max_length=25, null=True, blank=True)
[...]
def __unicode__(self):
return self.name
class Events(models.Model):
org = models.ForeignKey(Organization, on_delete=models.CASCADE, default=1)
time = models.DateTimeField(null=True, blank=True)
city = models.CharField(
max_length=25,
choices = CITY_CHOICES,
default = 'NY'
)
[...]
def __unicode__(self):
return '%s %s' % (self.org, self.time)
我使用此模板標記按城市過濾事件(此事件為NY):
@register.inclusion_tag('mysite/event_list.html')
def event_ny_tag(event):
return {'events': Events.objects.filter(linn='NY')}
url.py
urlpatterns = [
url(r'^$', HomePageView.as_view(), name='home'),
url(r'^organizations/$', OrganizationList.as_view(), name='organizations'),
url(r'^events/$', EventList.as_view(), name='events'),
url(r'^(?P<slug>[-\w]+)/$', OrgDetailView.as_view(), name='org_detail'),
]
但是,如何僅由一個特定組織過濾事件? 只有兩個城市,但有20個組織。 如何不對其進行硬編碼? a?
這不是復制粘貼。 只是類似於我的示例代碼。
自從有了外鍵組織的事件。 您可以在組織的詳細信息視圖模板中獲取與組織關聯的事件列表,如下所示:
{% for event in organization.events_set.all %}
{{ event }}
{% endfor %}
更新:要根據一個學期進行過濾,您可以使用自定義模板過濾器,該模板過濾器將這個學期作為參數與事件列表一起傳遞,如下所示:
@register.filter
def semester(events, sem):
return events.filter(semester=sem)
並在模板中執行此操作
<!--Semester 1-->
{% for event in organization.events_set.all|semester:"sem1" %}
{{ event }}
{% endfor %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.