Django 查询带关联模型
对于下面这些模型:
class Customer(models.Model):
id = models.IntegerField(primary_key=True)
class OrderA(models.Model):
name = models.CharField(max_length=20)
foo = models.FloatField()
customer = models.ForeignKey(Customer)
type = models.IntegerField()
class OrderB(models.Model):
name = models.CharField(max_length=20)
customer = models.ForeignKey(Customer)
type = models.IntegerField()
我想一次性获取所有的客户对象,以及与它们相关的订单A和订单B对象,前提是订单A和订单B的类型都等于1。
3 个回答
0
我们来试试这个方法:
Customer.objects.get(orderA__type=1, orderB__type=1)
希望这对你有帮助
3
select_related()
是一个可以提前加载相关属性的功能:
Customer.objects.filter(ordera_set__type=1, orderb_set__type=1).select_related()
-3
你在评论中提到的,select_related
确实是朝相反的方向工作的,这点你说得对。
我在我的博客上写过一种方法,可以实现你想要的方向的查找,具体内容可以查看这里(抱歉,打广告了)。