[Django]-Django excluding one queryset from another

68👍

✅

blocked_delivery_times = BlockedDeliveryTime.objects.filter(delivery_date=delivery_date) \
    .values('delivery‌​_time')
delivery_times = DeliveryTime.objects.exclude(id__in=blocked_delivery_times)

12👍

With the release of Django 1.11 you can use difference, which takes advantage of the EXCEPT SQL operator. I think it might be more efficient because you aren’t evaluating a query to get a list of values.

7👍

For newer version of Django (I use 1.10) you should not use .objects for the second line.

blocked_delivery_times = BlockedDeliveryTime.objects.filter(delivery_date=delivery_date) \
    .values('delivery‌​_time')
delivery_times = DeliveryTime.exclude(id__in=blocked_delivery_times)

Leave a comment