Django:从查询集中找到所有的一对一关系

问题描述 投票:0回答:2

我有一个查询集users,它是模型User的实例。第二个名为Patient的模型有一个名为OneToOneFielduser

user = OneToOneField('users.User', on_delete=CASCADE, related_name="patient",
                      blank=True, null=True)

目标是从用户的查询集中获取所有患者的查询集。我认为使用related_name就足够了,这意味着:

queryset_of_users=User.objects.filter(main_group='patients')
queryset_of_patients=queryset_of_users.patient

但是似乎不是这样,因为我收到以下错误:

[AttributeError:'QuerySet'对象没有属性'病人']

有什么想法吗?

python django django-queryset
2个回答
0
投票

未选中(但稍后会)

[[k.patient for k in User.objects.all() if hasattr(k, "patient")]应该可以正常工作而不会跳开DidNotExist

但是它将加载您拥有的所有用户记录,因此可能很痛苦


0
投票

假设您有一个[[Patient模型为

class Patient(models.Model): user = models.OneToOneField(Album, on_delete=models.CASCADE, related_name="patient", blank=True, null=True) # other fields...
使用下面的查询获取

[患者]]的QuerySet,其main_grouppatients

queryset_of_patients = Patient.objects.filter(user__name='foo')

0
投票
找到了,
© www.soinside.com 2019 - 2024. All rights reserved.