[英]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.