【问题标题】:Django: Find all one_to_one relations from querysetDjango:从查询集中查找所有 one_to_one 关系
【发布时间】:2020-02-12 15:04:07
【问题描述】:

我有一个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”对象没有“患者”属性

有什么想法吗?

【问题讨论】:

  • [k.patient for k in users.objects.all()]
  • User.objects.all().values_list("patient", flat=True) 会做你想做的事吗?
  • @kpie --> User.patient.RelatedObjectDoesNotExist: User has no patient
  • for user in User.objects.all(): if hasattr(user,'patient'): user.patient 即使用户没有病人也可以工作

标签: python django django-queryset


【解决方案1】:

找到了,

它通过进行第二次查询来工作:

queryset_of_patients=Patient.objects.filter(user__in=queryset_of_users)

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 2020-05-03
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2018-11-21
    相关资源
    最近更新 更多