Django Many2Many ограничение
Я использую Django с Django-Rest-Framework (без форм, без django_admin). У меня есть следующие модели
class Company(models.Model):
...
class Sector(models.Model):
...
company_id = models.ForeignKey(Company)
employees = models.ManyToManyField(Employee)
class Employee(models.Model):
...
company_id = models.ForeignKey(Company)
Сотрудник может находиться в нескольких Секторах, а Сектор может иметь несколько Сотрудников. (ManyToMany).
<Я могу сделать эту проверку в сериализаторах из DRF, но я также хочу обрабатывать это на уровне модели.
Я добавил таблицу в поле ManyToManyField
class Sector(models.Model):
...
company_id = models.ForeignKey(Company)
employees = models.ManyToManyField(Employee, through='M2MTable')
class M2MTable:
...
def save():
# employee.company_id and sector.company_id validation is done here
Это позволит сохранить объект M2MTable, однако это не позволит обработать ссылки на связанные объекты Sector.employees.add(Employee)
Из здесь я узнал, что могу добиться этого с помощью сигналов m2m.
Есть ли другой способ справиться с этим
Сквозной подход хорош и действителен на уровне модели. Вот соответствующая ссылка: https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships