Django:获取具有至少一个相关模型的模型的子集

Posted

技术标签:

【中文标题】Django:获取具有至少一个相关模型的模型的子集【英文标题】:Django: get subset of a model with at least one related model 【发布时间】:2013-05-13 14:26:42 【问题描述】:
class Category(models.Model):
    # fields

class Product(models.Model):
     category = models.ForeignKey(Category)
     # fields

假设并非所有类别都至少有一个产品,

我怎样才能获得至少关联一个产品的所有类别

有没有办法用 Django 查询集来做到这一点?

【问题讨论】:

【参考方案1】:

您应该可以在该类别上filter。您想找到产品不为空的Category 对吗?:

Category.objects.filter(product_set__isnull=False).distinct()

【讨论】:

好一个,我没想到isnull。无论如何,正确的形式是Category.objects.filter(product_set__isnull=False).distinct(),否则我们会得到重复的类别。请更新答案

以上是关于Django:获取具有至少一个相关模型的模型的子集的主要内容,如果未能解决你的问题,请参考以下文章

Django 模型 - 至少多对多之一

如何使用 prefetch_related 获取 Django 相关模型中的最新位置

Django 1.8.3 - 具有相关对象的模型字段验证

在Django中实现具有许多重叠字段的模型的最佳方法?

允许 Django 模型中的字段子集中的一个且仅一个字段

Django外键:获取相关模型?