2010-12-27 3 views
4

Ein Mock Testfall:Filterung mit einem Q-Objekt auf einer kommentierten QuerySet

def testCount(self): 
    qs = Test.objects.all() 
    qs = qs.annotate(a_count=Count('a_items'), b_count=Count('b_items')) 
    for item in qs: 
     print 'a_count: %d, b_count: %d' % (item.a_count, item.b_count) 
    qs1 = qs.filter(Q(a_count__gt=0)) 
    self.assertEquals(qs1.count(), 1) 
    qs2 = qs.filter(Q(a_count__gt=0) | Q(b_count__gt=0)) 
    self.assertEquals(qs2.count(), 1) 

Ausgang:

a_count: 1, b_count: 0 
a_count: 0, b_count: 0 
... 
FAIL: testCount 
    self.assertEquals(qs2.count(), 1) 
AssertionError: 0 != 1 

Warum tut | Betreiber das Verhalten so ändern und wie repariere ich es?

Antwort

2

Sieht aus wie dies ist immer noch ein open issue ab v1.2.4.

Ich denke, Sie hätten einen der mitgelieferten Patches im bug report testen oder auf raw queries zurückgreifen, bis es offiziell behoben ist.

Verwandte Themen