Ограничения интересно сделать либо на уровне моделей, либо в админке (с моделями работаю оттуда).
Есть такие модели:
class ModelA(models.Model):
name = models.CharField('имя модели А', max_length=200)
class ModelB(models.Model):
name = models.CharField('имя модели B', max_length=200)
class ModelC(models.Model):
name = models.CharField('имя модели C', max_length=200)
model_a = models.ForeignKey(ModelA, on_delete=models.SET_NULL, verbose_name='Модель А', null=True)
model_b = models.ForeignKey(ModelB, on_delete=models.SET_NULL, verbose_name='Модель A', null=True)
Допустим в БД есть две модели А, две модели В:
A1 (id=1, name="One"), A2 (id=2, name="Two")
B1 (id=1, name="One"), B2 (id=2, name="Two")
Как при создании модели С, ограничить выбор моделей А и В?
То есть, создаю модель С:
C1 (id=1, name="имя модели", model_a_id=1, model_b_id=1)
Если я захочу создать вторую модель С с такой же моделью А, выбор модели В ограничивался бы только id=2, потому что модель С с моделью А(id=1) с моделью В(id=1) уже есть в базе.