Django查询集的奇怪行为: 相同的对象被返回为第一个和最后一个元素

2024-06-12 10:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的模型:

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

但是当我跑的时候管理.pyshell并手动创建queryset

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

这里发生了什么?我哪里出错了?我能做些什么来修复它?似乎无法理解这种奇怪的行为


Tags: theobjectstitlemodelsemailrequestmoviesfilter
1条回答
网友
1楼 · 发布于 2024-06-12 10:22:16

如果不了解整个数据库结构和数据,我想我帮不了你多少忙。你知道吗

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

也许在询问之前,试着详细说明一下请求用户对象,然后查看name/email/etc是否是您所期望的。你知道吗

相关问题 更多 >