Поле ManyToMany в одной модели без разрешения одного и того же объекта

Я использую Django с моделью, которая имеет поле ManyToMany в той же модели.

class Job(models.Model):
    name        = models.CharField(_('Name'),max_length=80, blank=True, default="")
    related_jobs   = models.ManyToManyField('self')

это работает нормально. Я могу создавать объекты Job и добавлять задания в related_jobs. Проблема в том, что я могу связать один и тот же объект с самим собой следующим образом:

job1 = Job.objects.create(name='Java')
job2 = Job.objects.create(name='Python')
job1.related_jobs.add(job2)
job1.related_jobs.add(job1) #I don't want this to be possible

Можно ли как-то ограничить это на моделях?

Да, вы можете иметь составной ключ, в Django это делается с помощью UniqueConstraint. Хотя в вашем случае для применения этого ограничения, я думаю, вам понадобится промежуточная таблица.

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