当我调用url时,我需要获得除order_type = 14的订单以外的所有订单(订单表对order_type和批表有外键引用)。 请帮助我了解解决方案。
#models.py
class Batch(models.Model):
batchnum = models.TextField(null=True, blank=True)
otp= models.TextField(null=True, blank=True)
class Order(models.Model):
reqnum = models.TextField(null=True, blank=True)
order_date = models.DateField(auto_now_add=True, null=True, blank=True)
batch= models.ForeignKey(Batch, db_index=True,related_name='results', on_delete=models.PROTECT,null=True, blank=True)
order_status = models.ForeignKey('DotOrderStatus', on_delete=models.SET_NULL, null=True,related_name='dot_order_status',default=1)
order_type = models.ForeignKey('DotOrderType', on_delete=models.SET_NULL, null=True,related_name='dot_order_type',default=10)
slno = models.TextField(null=True, blank=True)
customer_name = models.TextField(null=True, blank=True)
contact = models.BigIntegerField( null=True, blank=True)
url:localhost:8000/api/v1/batch/id
其中' / id'是批次ID
请帮助我了解解决方案。
提前致谢。
答案 0 :(得分:0)
您可以使用exclude
以便不包含ID为14的订单:
batch_orders = batch.results.all().exclude(order_type__id=14)
希望它有所帮助。
答案 1 :(得分:0)
使用exclude排除order_type id 14并使用过滤器按批次ID进行过滤
Order.objects.exclude(order_type__id=14).filter(batch__id=id)
答案 2 :(得分:0)
你可以这样做。
Order.objects.filter(batch_id=id).exclude(order_type_id=14)