我的模特:
...
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):
我的看法:
def album_bild(request, album_id, bild_id):
album_id = int(album_id)
bilder = Bild.objects.filter(album__id = album_id).order_by('slot')
....
当我遍历模板中的“帐单”时,可以看到filter()确实起作用了,但是对象仍然由pk而不是“插槽”排序。
我对filter()和order_by()的使用是否存在问题?
编辑:我想我应该补充一点,一切都在 shell 中正常工作。因此,也许错误在于模板中...?
{% 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'))
这是在黑暗中拍摄的镜头,但足够快,值得一试。
关于django - 在Django View 中,order_by()不能与filter()一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114718/