Django - Можно ли получить объекты "косвенно связанного поля один к одному" с помощью reverse_many_to_one_manager?

Например, у меня есть такие модели:

class Company(models.Model):
    name = models.CharField(max_length=100)


class User(AbstractBaseUser):
    email = models.EmailField(max_length=250, unique=True)
    date_joined = models.DateTimeField(auto_now_add=True)
    last_login = models.DateTimeField(auto_now=True)
    is_admin = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    company = models.ForeignKey(Company, on_delete=models.PROTECT)
    is_admin = models.BooleanField(default=False)

Сейчас я могу легко получить все профили для компании, используя следующий запрос:

Company.objects.first().profile_set.all()

Но есть ли способ получить связанных пользователей из компании вместо профиля, учитывая, что объект пользователя один к одному связан с объектом профиля?

Примечание: Эти модели являются лишь примером моделей, и, учитывая логику приложения, мы не можем объединить модель пользователя и модель профиля.

company = Company.objects.get(id=X)

User.objects.filter(profile__company=company)

или создать менеджера на Users:

def from_company(self, company: Company):
    return self.filter(profile__company=company)

https://docs.djangoproject.com/en/4.0/topics/db/managers/

Вернуться на верх