【问题标题】:How to filter and access ManyToMany fields in a Django QuerySet?如何过滤和访问 Django QuerySet 中的多对多字段?
【发布时间】:2018-10-19 13:36:12
【问题描述】:

假设我有以下具有多对多关系的模型:

class City(models.Model):
    name = models.CharField(max_length=100)

class Course(models.Model):
    name = models.CharField(max_length=100)
    cities = models.ManyToManyField(City)

现在我想过滤给定城市中具有给定名称的课程:

courses = Course.objects.filter(name='Course1', cities__name='City1')

是否可以通过courses QuerySet 访问City 字段?在这个例子中,是否有可能只从courses 得到'City1'

提前致谢。

【问题讨论】:

    标签: django python-3.x many-to-many django-queryset


    【解决方案1】:

    您可以使用prefetch_relatedPrefetch object 来执行此操作。

    city1 = City.objects.filter(name='City1')
    courses = Course.objects.filter(name='Course1', cities__name='City1').prefetch_related(
        Prefetch('cities', queryset=city1)
    )
    

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2015-07-18
      • 1970-01-01
      • 2020-03-20
      • 2017-12-23
      • 2021-07-10
      • 1970-01-01
      • 2013-08-18
      • 2012-04-26
      相关资源
      最近更新 更多