这是我的模特:
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
这里发生了什么?我哪里错了?我该怎么办才能修复它?似乎无法理解这种奇怪的行为
答案 0 :(得分:2)
如果没有看到整体数据库结构和数据,我认为我不能帮助你。
但有一点需要注意的是,在第一个实例中,您基于请求对象进行查询,而第二个实例则是根据电子邮件地址进行查询。
也许在查询之前,首先尝试详细说明request.user对象,然后查看name / email / etc是否符合您的预期。