我有一个查询集users
,它是模型User
的实例。第二个名为Patient
的模型有一个名为OneToOneField
的user
:
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'对象没有属性'病人']
有什么想法吗?
未选中(但稍后会)
[[k.patient for k in User.objects.all() if hasattr(k, "patient")]
应该可以正常工作而不会跳开DidNotExist
但是它将加载您拥有的所有用户记录,因此可能很痛苦
假设您有一个[[Patient
模型为
class Patient(models.Model):
user = models.OneToOneField(Album, on_delete=models.CASCADE, related_name="patient",
blank=True, null=True)
# other fields...
使用下面的查询获取[患者]]的
QuerySet
,其main_group
是patients
queryset_of_patients = Patient.objects.filter(user__name='foo')