#django
#django
Вопрос:
У меня есть следующие модели :
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. определите «5 уникальных объектов учетной записи сотрудника». уникальный в каком смысле? какова отправная точка?
Company
объект? И почему существуетadmin
внешний ключ для обоихCompany
иCompanyDetails
?
Ответ №1:
Всегда начинайте с модели, которую вы хотите получить. Здесь вы хотите получить учетные записи, поэтому начните оттуда.
Account.objects.filter(company__companydetails__admin=request.user)