Mysql Django中如何限制反向关系中的结果
我有两个表,一个称为Mysql Django中如何限制反向关系中的结果,mysql,django,Mysql,Django,我有两个表,一个称为公司,另一个称为用户,每个用户都使用外键与一家公司关联。因此,我可以在Django中使用反向关系来获取特定公司的所有用户(例如,company.users) 在我的例子中,我正在构建ListAPIView,它返回多个公司,我想返回最新创建的用户。我的问题是,我不想使用prefetch\u related或select\u related,这样它会加载所有用户,因为每个公司可能会有数千个用户!此外,我不想在一个单独的查询中加载每个最新用户,因此每个API请求都会有数十个查询 我
公司
,另一个称为用户
,每个用户都使用外键与一家公司关联。因此,我可以在Django中使用反向关系来获取特定公司的所有用户(例如,company.users
)
在我的例子中,我正在构建ListAPIView
,它返回多个公司,我想返回最新创建的用户。我的问题是,我不想使用prefetch\u related
或select\u related
,这样它会加载所有用户,因为每个公司可能会有数千个用户!此外,我不想在一个单独的查询中加载每个最新用户,因此每个API请求都会有数十个查询
我试过这样的方法:
users_qs = models.User.objects.filter(active=True).order_by('-created')
company_qs = models.Company.objects.prefetch_related(
Prefetch('users', queryset=users_qs[:1], to_attr='user')
).order_by('-created')
在这种情况下,prefetch\u related
失败,因为我们无法对prefetch
的queryset
过滤器设置限制(它会导致此错误“一旦获取一个片段,就无法过滤查询”)
有什么想法吗?我想你是在提供一个对象而不是queryset预取('users',queryset=users\u qs[:1],to\u attr='user')
我想你是在提供一个对象而不是queryset预取('users',queryset=users\u qs[:1],to\u attr='user')