gpt4 book ai didi

python - 如何在不使用 for 循环的情况下在多对多字段上应用过滤器

转载 作者:行者123 更新时间:2023-12-01 07:17:40 28 4
gpt4 key购买 nike

我的模型就像

class Company(models.Model):
name = models.CharField(max_length=400, blank=True, null=True)

class Intership(models.Model):
company = models.ForeignKey(Company)
location = models.CharField(max_length=400, blank=True, null=True)


class Student(models.Model):
name = models.CharField(max_length=400, blank=True, null=True)
intership = models.ManyToManyField(Intership,null= True, blank=True)

我期待所有在名为“xyz”的公司实习过的学生。

我有代码

company_name = "xyz"
stds
for student in students:
interships = student.intership.all()
for intership in interships:
if intership.company.name == company_name:
stds.append(student)

是否可以通过一次查询获得所有这些信息?

最佳答案

您可以只过滤 Student s 本身:

Student.objects.filter(<b>intership__company__name=<i>'xyz'</i></b>)

您可能想使用.distinct()在这里,否则 Student在同一家公司的多个实习机会将被多次列出:

Student.objects.filter(intership__company__name=<i>'xyz'</i>)<b>.distinct()</b>

Note: It is inter<b>n</b>ship, not intership.

关于python - 如何在不使用 for 循环的情况下在多对多字段上应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57867917/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com