gpt4 book ai didi

python - 使用 Django 查询集从相关模型中选择所有列

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:57 25 4
gpt4 key购买 nike

我有一个 Django 应用程序,我希望从三个模型中选择每一列。

Project
| - Employee
| - Task

Employee 和 Task 通过 ForeignKey 字段与 Project 相关。

我能够使用原始方法获取我正在寻找的数据:

SELECT *
FROM "Project"
LEFT OUTER JOIN "Employee" ON "Employee"."project_id" = "Project"."id"
LEFT OUTER JOIN "Task" ON "Task"."project_id" = "Project"."id";

但是,在取回数据后,我希望使用 django_pandas,因为在将数据作为 csv 返回之前需要进行一些数字处理。将 RawQuerySet 加载到 pandas 中并不是开箱即用的。

我需要选择 >100 列,将所有列手动输入 Project.objects.values( ... ) 非常困惑。如何使用 Django 的 QuerySet API 从相关模型中选择所有列?

最佳答案

你可以这样做:

projects = Project.objects.prefetch_related('employee_set', 'task_set').all()

对于相关字段(已经预取):

employees_on_projects = [project.employee_set.values() for project in projects]
tasks_in_projects = [project.task_set.values() for project in projects]

您可以通过执行以下操作让所有员工和任务与各自的项目相关联:

data = zip(projects.values(), employees_on_projects, tasks_in_projects)

这应该适用于您的数据框:

import pandas as pd
df = pd.DataFrame.from_records(data)

关于python - 使用 Django 查询集从相关模型中选择所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37395021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com