繁体   English   中英

Django QuerySet奇怪行为:为First和Last元素返回相同的对象

[英]Django QuerySet Strange Behavior: Same object returned for First and Last element

这是我的模特:

class Film(models.Model):
    filmmaker = models.ForeignKey(settings.AUTH_USER_MODEL)
    title = models.CharField(max_length=250)

在我看来,用户可以从下拉列表中选择一部电影并查看该电影的细节。

我的观点:

@login_required()
def home(request):

    movies = Film.objects.filter(filmmaker=request.user)

    # I added the following to debug. Assume there are 4 elements in the queryset
    print movies[0].title, movies[3].title
    print movies[1].title, movies[2].title

    ...

控制台输出是这样的并且错误:

title1 title1
title2 title3

但是,当我运行manage.py shell并手动创建查询集时,

>>> movies = Film.objects.filter(filmmaker__email='email@email.com')
>>> print movies[0].title, movies[3].title
>>> print movies[1].title, movies[2].title

输出如预期:

title1 title4
title2 title3

这里发生了什么? 我哪里错了? 我该怎么办才能修复它? 似乎无法理解这种奇怪的行为

如果没有看到整体数据库结构和数据,我认为我不能帮助你。

但有一点需要注意的是,在第一个实例中,您基于请求对象进行查询,第二个基于电子邮件地址进行查询。

也许在查询之前,首先尝试详细说明request.user对象,然后查看name / email / etc是否符合您的预期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM