如何通过Django中的另一个ForeignKey使用ForeignKey字段获取对象?

时间:2017-10-24 15:02:05

标签: python django django-models django-queryset

我的 models.py 是这样的:

class Department(models.Model):
    name = models.CharField(max_length=255)

class Category(models.Model):
    name = models.CharField(max_length=255)
    department = models.ForeignKey(Department, related_name="categories")

class Product(models.Model):
    name = models.CharField(max_length=255)
    category = models.ForeignKey(Category, related_name="products")

正如您所看到的,产品模型没有直接连接到部门,它只有一个通过类别模型。但是,在我的部门详细信息<部门X> ,我想获得所有具有部门<部门的产品X部门。有没有办法用一个查询做到这一点?我不想为此使用for循环。谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用双下划线表示法来查找相关模型中的字段,例如:

department = Department.objects.get(name='X')
products = Product.objects.filter(category__department=department)

或者,如果您还没有department个实例,则可以按部门名称进行过滤:

products = Product.objects.filter(category__department__name='X')

答案 1 :(得分:2)

也许是这样的:

Product.objects.filter(category__department=<DepartmentX>)