的外键我有这些模型在我的Django应用程序:Django的模板得到查询集
class GeoBonus(models.Model):
name = models.CharField(max_length=250)
country = models.ForeignKey(Country, related_name='geo_bonuses')
bookmaker = models.ForeignKey(Bookmaker, related_name='geo_bonuses')
属性在国家和博彩公司并不是那么重要,可以说,每一个有name
参数。
在模板中我有一个用于循环:
{% for bookmaker in bookmakers %}
{{bookmaker.name}}
{% endfor %}
,我想打印基于country
GeoBonus的name
。可以说用户的国家是一个字符串。
{% for bookmaker in bookmakers %}
{{bookmaker.name}}
{% if country_code %}
{% for geo_bonus in bookmaker.geo_bonuses|in_country:country_code %}
{{geo_bonus}}
{% endfor %}
{% endif %}
{% endfor %}
这是我的过滤器:
@register.filter
def in_country(qs, country_code):
return qs.filter(country__twocode=country_code)
哪里country_code
通过查看发送:
context = RequestContext(request,{
'bookmakers': Bookmaker.objects.select_related('geo_bonuses').all(),
'country_code': country_code,
})
但是,这是行不通的。我究竟做错了什么?我得到Invalid filter: 'in_country'
(如果我使用简单的过滤器作为upper
的字符串,它的工作原理,所以模板标签加载)。
所以基本上我的问题是,如何选择一个外键,同时运行一个for循环?
您没有将'in_country'导入到您的模板中。你需要使用'{%load file_that_defined_in_country%}'加载过滤器:https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/ –