[英]Django excluding one queryset from another
我有以下兩種型號:
class DeliveryTime(models.Model):
delivery_time = models.CharField(max_length=15)
class BlockedDeliveryTime(models.Model):
delivery_date = models.DateField()
delivery_time = models.ForeignKey(DeliveryTime)
我想返回一天所有可用的交貨時間,即除了BlockedDeliveryTime
之外的所有DeliveryTime
。
blocked_delivery_times = BlockedDeliveryTime.objects.filter(delivery_date=delivery_date)
delivery_times = DeliveryTime.objects.all()
從delivery_times
我想刪除所有blocked_delivery_times.delivery_time
我怎樣才能做到這一點? 有什么建議么?
blocked_delivery_times = BlockedDeliveryTime.objects.filter(delivery_date=delivery_date) \
.values('delivery_time')
delivery_times = DeliveryTime.objects.exclude(id__in=blocked_delivery_times)
對於較新版本的Django(我使用1.10),你不應該使用.objects作為第二行。
blocked_delivery_times = BlockedDeliveryTime.objects.filter(delivery_date=delivery_date) \
.values('delivery_time')
delivery_times = DeliveryTime.exclude(id__in=blocked_delivery_times)
隨着Django 1.11的發布,你可以使用difference
,它利用了EXCEPT
SQL運算符。 我認為它可能更有效,因為您沒有評估查詢以獲取值列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.