我的模型设置了多对多关系,可以将项目分成组和类别:
class DownloadableResourceGroup(models.Model):
pass
class DownloadableResourceCategory(models.Model):
pass
class DownloadableResource(models.Model):
res_categories = models.ManyToManyField(DownloadableResourceCategory, blank=True)
res_groups = models.ManyToManyField(DownloadableResourceGroup, blank=True
每个视图都有一个分配给它的资源组,它提供资源的初始过滤。然后,我想根据类别应用更多过滤器。我的问题是 - 如何从DownloadableResourceCategories
获取DownloadableResources
的{{1}}列表,而不是迭代它们?我只想显示当前视图中DownloadableResourceGroup
上显示的类别,并且不希望显示其中没有任何项目的类别。
进一步说明我在做什么:
DownloadableResources
答案 0 :(得分:1)
您可以获得以下所有相关类别:
relevant_categories = DownloadableResourceCategory.objects.filter(
downloadableresource__in=items).distinct()
请注意distinct()
的使用,因为它是m2m关系,您可以多次获得类别。 distinct
只会返回此案例中的唯一类别。