Django按相关字段过滤

时间:2021-04-13 14:38:20

标签: django django-models django-orm

我有一些像这样的 Django 模型:

class Customer(models.Model):
    name = models.CharField(max_length=100)

class Order(models.Model):
    title = models.CharField(max_length=100)
    ...
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name='orders')

我想获取特定客户订单的查询集。

我应该使用它吗?:

Order.objects.all().filter(customer_id)

或者它?:

customer_object.orders.all()

为什么?

1 个答案:

答案 0 :(得分:0)

如果你有客户的id,你可以像下面这样使用它:

Order.objects.all().filter(customer__id=id)

或者如果你有客户相关的对象,你可以直接传递它:

customer = ...
Order.objects.all().filter(customer=customer)

这是一种方法。它可以根据您希望应用程序的执行方式而改变。