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

Вернуться на верх