Джанго получает отличный объект от многих ко многим - PullRequest
0 голосов
/ 29 марта 2019

У меня есть следующие модели:

class Account(AbstractBaseUser):
    username = models.CharField(max_length=40, unique=True)
    name = models.CharField(max_length=200, null=True)
    is_admin = models.BooleanField(default=False)
    is_hiren = models.BooleanField(default=False)
    is_manager = models.BooleanField(default=False)

    USERNAME_FIELD = 'username'

    objects = AccountManager()

class Company(models.Model):
    admin = models.ForeignKey(Account, on_delete=models.PROTECT, null=True)
    name = models.CharField(max_length=100)


class CompanyDetails(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    employee = models.ManyToManyField(Account, related_name='employee')
    admin = models.ForeignKey(Account, on_delete=models.PROTECT, null=True)

Предположим, у меня есть 7 объектов учетной записи, один администратор и шесть менеджеров (или сотрудников).Администратор имеет несколько компаний и пять менеджеров назначены в этих компаниях.Одна учетная запись менеджера может быть назначена нескольким компаниям.

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

вот что я попробовал:

@login_required
def employee_list(request):
    employees = get_list_or_404(CompanyDetails, admin=request.user)
  print(CompanyDetails.objects.filter(employee__in=Account.objects.all()).distinct())

1 Ответ

1 голос
/ 29 марта 2019

Всегда начинайте с той модели, которую хотите получить. Здесь вы хотите получить учетные записи, поэтому начните с этого.

Account.objects.filter(company__companydetails__admin=request.user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...