[英]How to filter queryset not equal to in Django?
我有一個稱為Stores和SaleItems的模型,看起來像這樣。
class Stores(models.Model):
name = models.CharField(unique=True, max_length=20)
class SaleItems(models.Model):
sale_by = models.ForeignKey(Stores)
start_date = models.DateTimeField()
end_date = models.DateTimeField()
因此,我需要根據以下條件檢索銷售商品。
因此,在我的views.py中,這是我提出的目標。
class SaleItemsView(viewsets.ModelViewSet):
querys = SaleItems.objects.all()
def get_queryset(self):
#get my store id
store_id = self.request.query_params.get('store_id')
querys = SaleItems.objects\
.exclude(store__ne=store_id, end_date__lt=timezone.now())\
.exclude(store__ne=store_id, start_date__gt=timezone.now())
return querys
但是,django似乎不再沒有等於運算符。 我還有其他方法可以實現這一目標嗎?
我認為您可以使用Q
對象合並每個條件的記錄,然后執行distinct()
來刪除重復項:
now = timezone.now()
items_within_date_range = Q(start_date__lte=today, end_date__gte=today)
curr_store_items = Q(store=store_id)
result = SaleItems.objects.filter(items_within_date_range|curr_store_items).distinct()
第一個查詢將獲取您的商店和其他商店在時間范圍內的所有商品,第二個查詢將獲取您的商店的所有商品,然后合並然后獲取所有商品。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.