Django ListView через отношения моделей
Я читал здесь и не могу найти ответ на вопрос, который я ищу. Возможно, я задаю неправильный вопрос.
У меня есть три модели. Рекрутер Офис Рекрут
Рекрутеры назначены в несколько офисов, и в каждом офисе есть несколько сотрудников. Мне нужно создать представление списка, в котором будут перечислены все сотрудники, связанные с рекрутером. То есть что-то вроде этого:
Рекрутеру 1 назначен офис 1 и 2. В офисе 1 работают сотрудники 1,2,3. В офисе 2 работают сотрудники 3,4,5
Вид списка должен отображать всех сотрудников в разделе Recruiter 1.
Мои модели:
class Recruit(models.Model):
id = models.CharField(max_length=25,primary_key=True, unique=True)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
mobile_phone = models.CharField(max_length=20,null=True)
preferred_phone = models.CharField(max_length=20,null=True)
email= models.CharField(max_length=100,null=True)
officeid = models.ForeignKey(Office,on_delete=models.DO_NOTHING,related_name="recruit")
class Office(models.Model):
office_name = models.CharField(max_length=100)
officeid = models.CharField(max_length=20,primary_key=True,unique=True)
class Recruiter(models.Model):
user = models.OneToOneField(User, related_name='recruiter',on_delete=models.CASCADE)
organization = models.ForeignKey(UserProfile,on_delete=models.CASCADE)
Нужна ли мне таблица AssingedOffices для объединения всего этого вместе?
class AssignedOffice(models.Model):
user = models.ForeignKey(UserProfile,on_delete=models.CASCADE)
esa_office = models.ForeignKey(Office,on_delete=models.CASCADE)
Просто не уверен, как соединить их и отобразить в listview.
- Если вы хотите достичь отношений "многие к одному", подобных этим
Рекрутеры назначены в несколько офисов
то у вас должно быть ForeignKey
в модели Office
, а не наоборот. Я предполагаю, что каждый Office
имеет один Recruiter
. В противном случае у вас должно быть отношение "многие-ко-многим", которое строится с помощью ManyToManyField
- Я предполагаю, что по
в каждом офисе работает несколько сотрудников
Вы имели в виду, что каждый Office
объект имеет несколько Recruit
объектов
- Если вы хотите перечислить все
Recruit
объекты в ListView для моделиRecruiter
, то я думаю, что самым простым способом будет добавить поле ForeignKey в модельRecruit
и ссылаться на него через ссылку на объект .