Поле 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. Хотя в вашем случае для применения этого ограничения, я думаю, вам понадобится промежуточная таблица.