【问题标题】:Django Filtering Many-to-Many relationship without ManyToManyField "through" relationshipDjango过滤没有ManyToManyField“通过”关系的多对多关系
【发布时间】:2021-03-19 09:57:36
【问题描述】:

鉴于这些模型:

class Event(models.Model):
      name = models.CharField()

class Project(models.Model):
      name = models.CharField()

class EventProject(models.Model):
      event= models.ForeignKey(Event)
      project= models.ForeignKey(Project)

有没有办法像这样为每个Project 获取所有Events:使用属性project.events = [<array of Event>]

我发现了一个类似的question,但是其中一张表具有members = models.ManyToManyField(Person, through='Membership') 关系,因此更容易做到。我不能像相关问题中那样做并添加关系,因为我无法更改模型。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    直截了当

    Event.objects.filter(eventproject__project=project)
    

    通过 ForeignKey 过滤在 Django 中向前和向后工作。您可以使用小写的模型名称进行反向过滤。

    https://docs.djangoproject.com/en/3.1/topics/db/queries/#lookups-that-span-relationships

    【讨论】:

    • 啊,谢谢!我正在写event_project__project=project(带下划线),所以它一直在工作,再次感谢!
    猜你喜欢
    • 2018-05-20
    • 2020-06-18
    • 1970-01-01
    • 2016-04-18
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多