localhost とサーバー (mercurial のおかげ) で同じコードを使用していますが、動作が少し異なります。このコードを使用して、テンプレートでカテゴリとそのサブカテゴリをレンダリングしたい:
ビュー.py:
def category(request, category_slug):
try:
category = Category.objects.get(slug=category_slug)
except:
raise Http404
subcats = category.get_children()
return render_to_response('catalogue.html',
{'category': category,
'subcats': subcats,
'header_template':'common/includes/header_%s.html' % flixwood_settings.CURRENT_SITE
},
context_instance=RequestContext(request))
テンプレート:
<div class='subcats'>
{% for subcat in subcats %}
{% ifequal subcat.level 1 %}
<div class="item">
<a href="{% url flixwood.views.category category_slug=subcat.slug %}"><img src="{% thumbnail subcat.image 66x66 %}" class="thumb"></a>
<a href="{% url flixwood.views.category category_slug=subcat.slug %}" class="name">{{ subcat.category }}</a>
{{ subcat.short_description|safe }}
<div class="clear_left"></div>
</div>
{% cycle '' '' '<div class="clear_left"></div>'|safe %}
{% endifequal %}
{% endfor %}
</div>
ただし、このコードは localhost で完全に機能します (サブカテゴリは正しくレンダリングされます) - サーバーでは機能せず、{{ subcats|length }}は 0 を返します。localhost とサーバーの MySQL ベースの値を比較しました - それらは正しいです継承が機能するはずです。最もおもしろいのは、同じクエリがサーバー上のmanage.py シェルで完全に機能することです。
ハックの何が問題なのですか?