问题描述
我有以下型号:
class Partner(models.Model):
partner_name = models.CharField(max_length=50)
class Allocation(models.Model):
partner = models.ForeignKey(
Partner,related_name='partner_allocations',on_delete=models.CASCADE
)
is_allocated = models.BooleanField(default=False)
通过使用 Django ORM,我需要带有列的连接表作为 ['partner_name','partner_id','is_allocated']。
所有合作伙伴名称(也不相关),以及来自分配模型的相关数据。
sql = SELECT partner.id,allocation.partner_id,allocation.is_allocated
FROM Partner LEFT OUTER JOIN Allocation ON Partner.id=Allocation.partner_id
或
sql = SELECT partner.id,allocation.is_allocated
FROM Allocation RIGHT OUTER JOIN Partner ON Allocation.partner_id=Partner.id
拜托,有人可以帮忙吗。
解决方法
在 django 中通过 ORM 访问数据非常容易,例如:
allocation = Allocation.objects.get(id=1)
# access to partner object
print(allocation.partner)
print(allocation.partner.partner_name)
allocations = Allocation.objects.all()
for allocation in allocations:
print(allocation.partner.partner_name)
# or
allocations = Allocation.objects.all().values('partner__id','partner__name','is_allocated')
for allocation in allocations:
print(allocation['partner__name'])