2011-04-23 54 views
0

作为this question的后续操作,我想查明发生的实际错误。我做错了什么,或者这是一个错误?Django动态过滤器故障

f = {'groups__isnull': 'True'} 
    students1 = models.Student.objects.filter(**f) 
    students2 = models.Student.objects.filter(groups__isnull=True) 

这两个查询应该是相同的,但不是。

仅供参考,我的模型:

class Student (models.Model): 
    user = models.ForeignKey(User, unique=True, null=False, related_name='student') 
    teacher = models.ForeignKey(User, null=False, related_name='students') 
    assignment = models.ForeignKey(LabJournal, blank=True, null=True, related_name='students') 

class JournalGroup (models.Model): 
    title = models.CharField(null=False, max_length=256) 
    owner = models.ForeignKey(User, null=True, related_name='journal_groups') 
    members = models.ManyToManyField(Student, blank=True, related_name='groups') 

回答

5

我看到查询之间的明显差异。

{'groups__isnull': True}永远不会等于{'groups__isnull': 'True'}

One提供True作为布尔值,其他作为字符串提供。