【发布时间】:2019-12-13 18:17:37
【问题描述】:
我想根据用户组织在对象的多对多字段中的条件返回一个查询集。
我的列表APIVIew:
class ListCoursesView(generics.ListCreateAPIView):
serializer_class = CourseSerializer
def get_queryset(self):
catalogue_items = CatalogueItem.objects.filter(tenant=self.request.user.tenant)
org_catalogue_items = []
organisation = self.request.user.organisation_unit.org
for item in catalogue_items:
if item.organisations.count() > 0:
if organisation in item.organisations.all():
org_catalogue_items.append(item)
return org_catalogue_items
return catalogue_items
CatalogueItem 型号:
class CatalogueItem(Enrollable):
admin_only = models.BooleanField(default=False)
organisations = models.ManyToManyField(Organisation, blank=True)
如果组织字段为空,我只想按租户过滤,如果组织不为空,我想检查登录用户的组织是否在多对多字段中。
这不会返回正确的结果。如果多对多字段为空,我想返回 catalogue_items 数组。如果不为空,它应该根据对象是否在多对多字段中返回查询集
【问题讨论】:
-
可否分享相关模型并说明您要检索的什么?
-
好的@WillemVanOnsem
标签: django-rest-framework django-queryset