在Django中,如何查询与另一个模型一对一关系的所有对象?

时间:2018-04-06 21:18:52

标签: python django

我希望重构一些代码,这些代码具有特殊类型的用户LucyGuide,与Django的User模型具有一对一的关系:

from django.db import models
from django.contrib.auth.models import User


class LucyGuide(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    @classmethod
    def lucy_guide_user_ids(cls):
        return [guide.user_id for guide in cls.objects.all()]

在某些用例中,我们需要具有相应User的所有LucyGuide,其获得方式如下:

User.objects.filter(id__in=LucyGuide.lucy_guide_user_ids())

这对我来说似乎相当冗长,似乎应该有一种更简洁的方式。任何想法如何重构这个?

1 个答案:

答案 0 :(得分:1)

我相信答案是

User.objects.exclude(lucyguide=None)

这样可以完全取消lucy_guide_user_ids()方法。