django - 在Django View 中,order_by()不能与filter()一起使用

标签 django

我的模特:

...
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/

相关文章:

python - Django:自定义主键的自动实例化?

python - django queryset orm - 从同一个表中获取特定格式的数据

django - rest_framework authtoken 迁移错误

Django 1.10 对子目录中的应用程序的迁移支持

python - 如何创建一个在复选框右侧显示复选框标签的 Django 表单?

Javascript .on ('click' 不适用于跨度

Django查询多对多字段计数错误计算

python - django.core.exceptions.ImproperlyConfigured : Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited

python - 禁用 Django 中所有表单字段的语法

django - 在 Django 管理员中,如何将博客文章设置为仅在它不是草稿时进行验证?