我的型号:
...
class Bild(models.Model):
album = models.ForeignKey(Album)
slot = models.IntegerField()
bild = models.ImageField(upload_to='bilder', null=True)
untertitel = models.CharField(max_length=200, null=True)
def __unicode__(self):
My view:
def album_bild(request, album_id, bild_id):
album_id = int(album_id)
bilder = Bild.objects.filter(album__id = album_id).order_by('slot')
....
当我迭代模板中的“bilder”时,我可以看到 filter() 确实有效,但对象仍然按 pk 而不是“slot”排序。
我使用filter()和order_by()有问题吗?
编辑:我想我应该补充一点,外壳中的一切都工作正常。那么错误可能出在模板中......?
{% for bild in bilder %}
<li
{% ifequal bild.slot bild_id %}
class="active"
{% endifequal %}
onclick="window.location.href='/portfolio/{{ album_id }}/{{ bild.slot }}'"><div>{{ bild.slot }}</div></li>
{% endfor %}
{% for i in empties %}
<li class="empty"></li>
{% endfor %}
我已经做了很多.filter().order_by()
链子就像你那里有的一样,我觉得没有什么不合适的。我从未尝试过在不进一步处理对象的情况下将该顺序传递给模板(通常会迭代它们),所以我想知道是否order_by()
作为 django 惰性评估的一部分丢失了?也许尝试包裹filter().order_by()
线在一个list()
强制在那里进行评估而不是推迟到稍后的时间?
bilder = list(Bild.objects.filter(album__id = album_id).order_by('slot'))
这是一次黑暗中的尝试,但速度足够快,值得一试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)