2016-06-17 2 views
0

Может кто-нибудь объяснить это мне?Django исключить проблемы

class EventBlock(models.Model): 
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True) 

class EventSlot(models.Model): 
    event_block = models.ForeignKey(EventBlock) 

>>> EventSlot.objects.count() 
>>> 446 

>>> EventSlot.objects.filter(event_block__created_by__groups__name='Manager').count() 
>>> 438 

>>> EventSlot.objects.exclude(event_block__created_by__groups__name='Manager').count() 
>>> 446 

Конечно, если есть 438 матчей на фильтре, то исключить следует удалить эти 438 матчей, в результате чего 8? Но он не удалил ни одного из матчей. Я смущен.

+0

OK, сделано. Есть идеи? – bodger

ответ

0

Я думаю, что вы можете получить неожиданные результаты, потому что пользователь created_by принадлежит к другим группам, а также к группе «Менеджер».

Вы можете изменить свой запрос, получив список менеджеров.

managers = User.objects.filter(groups__name='Manager') 
EventSlot.objects.filter(event_block__created_by__in=managers) 
EventSlot.objects.exclude(event_block__created_by__in=managers) 
+0

Отлично - я знал, что это будет что-то глупое. Благодаря! – bodger

Смежные вопросы