Django внешний ключ на поле многие ко многим - PullRequest
1 голос
/ 11 апреля 2020

Компания может иметь много рабочих мест. Работа должна быть связана с категориями работы этой компании. Как я могу сделать это правильно?

Таким образом, работа является внешним ключом при выборе категории компании.

class Company(models.Model):
    job_categories = models.ManyToManyField(JobCategory,blank=False)


class Job(models.Model):
    category = models.ForeignKey(Company, on_delete=models.CASCADE)

1 Ответ

2 голосов
/ 11 апреля 2020

Этот код может переводить то, что вы хотите: два вложенных 1-N отношения

class Company(models.Model):
    (...)  # No need for a field here

class JobCategory(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='categories'))

class Job(models.Model):
    category = models.ForeignKey(JobCategory, on_delete=models.CASCADE, related_name='jobs')

Вы можете воспользоваться обратными отношениями:

company = Company.object.get(...)
related_categories = company.categories.all()
for category in related_categories:
   jobs = category.jobs.all()
   print(jobs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...