【发布时间】:2018-11-21 04:24:08
【问题描述】:
如果有公司模型。这些公司有一个属性employment_set,因为工人是通过雇佣关系分配给公司的。如何查询给定公司的所有员工?
就业模型如下所示:
class Employment(
SoftDeletableModel,
TimeStampedModel,
models.Model
):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
employee = models.ForeignKey(UserWorkerProfile)
employed_by = models.ForeignKey(UserOwnerProfile)
我尝试使用company.employment_set.values("employee"),但这会返回一个奇怪的激活器查询集。有没有办法返回正常的查询集?还是values() 已经是正确的方法?
编辑:详细说明:我想最终得到一个包含所有 UserWorkerprofile 模型实例的查询集。
在values() 的文档中说:
当用作可迭代对象时,返回一个返回字典而不是模型实例的 QuerySet。
我想要一个模型实例的查询集。
【问题讨论】:
-
就像你说的那样,
employment_set。这是一个经理,因此您可以例如写some_company.employment_set.all()来获取所有Employments。这就像每个 QuerySet:你可以.filter(..)等。 -
@willem-van-onsem 是的,但是我有所有的就业模型实例。我进一步阐述了这个问题。我想以所有员工的查询集结束,而不是就业。
-
啊,那是
UserWorkerProfile.objects.filter(employment__company=some_company)。 -
@willem-van-onsem 谢谢你,这已经很有帮助了!这是反过来的唯一方法吗?来自公司,更像我上面描述的?
-
据我所知,你不能查询对象管理器的关系,据我所知(afaik,确实 not 存在类似
some_company.employment_set.userworkerprofile_set的东西.
标签: django django-models django-queryset django-orm django-1.11