join - 如何在 Django 查询集中使用内连接
问题描述
我在 model.py 中有以下模型
class Jobs(models.Model):
JobNumber=models.CharField()
CustomerName = models.CharField()
class JobTime(models.Model):
JobNumber = models.ForeignKey(Jobs, on_delete=models.PROTECT)
WorkHrs = models.FloatField()
LabourCost = models.FloatField()
class JobMaterial(models.Model):
JobNumber = models.ForeignKey(Jobs, on_delete=models.PROTECT)
MaterialCost = models.FloatField()
我想为 Jobs 模型中的所有 JobNumbers 生成一个带有 JobNumber、CustomerName、LabourCost、MaterialCost 的查询集。请帮忙,我使用 Django 版本:3.0.6 和 Python 版本:3.8.2
解决方案
老实说,我认为应该修改您的模型,以便外键驻留在 Jobs 类中。一个工作应该有一个 JobTime 和一个 JobMaterial,而不是相反。然后,您可以执行以下操作:
class Jobs(models.Model):
JobNumber=models.CharField()
CustomerName = models.CharField()
job_time = models.ForeignKey(JobTime, on_delete=models.PROTECT)
job_material = models.ForeignKey(JobMaterial, on_delete=models.PROTECT)
Jobs.objects.all().select_related('job_time', 'job_material')
如果您想job_material
成为 Jobs 上的一对多字段,那么您将使用prefetch_related
而不是select_related
.
希望对您有所帮助,祝您编码愉快!
推荐阅读
- reactjs - 如何将 String 转换为 React 可以正确渲染的东西?
- windows - 命令行 - 如果位置 1 中存在文件,则删除位置 2 中的文件,然后复制到位置 2
- android - 为什么我得到 org.mockito.exceptions.misusing.CannotStubVoidMethodWithReturnValue?
- c++ - 我的文件不工作并从 C++ 文件中读取上下文
- python - 使用 pymssql 对 IN 子句进行参数绑定
- python - 在python中计算股票的平衡量(OBV)
- javascript - 使用 oracle jet + knockout JS + elasticsearch 根据用户列选择填充动态列
- excel-formula - 从excel中的复杂字符串中提取文本
- sql - 某些记录的 SQL 查询失败
- android - 多个片段的基本导航片段