@kondratev-ad

Как в Django сделать уникальные значения поля ForeignKey на основе записей в БД?

Ограничения интересно сделать либо на уровне моделей, либо в админке (с моделями работаю оттуда).
Есть такие модели:
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) уже есть в базе.
  • Вопрос задан
  • 727 просмотров
Пригласить эксперта
Ответы на вопрос 1
Tomio
@Tomio
backend developer (python, php)
Смотрите в сторону unique_together, validate_unique, либо переопределяйте метод save для проверки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы