Задать вопрос

Как написать выражение CheckConstraint класса Meta модели django для проверки не превышения количества строк ключа ForeignKey?

Есть следующие модели Django:

class Product(models.Model):
   name = CharField(...)

class Image(models.Model):
   src = ImageField(...)
   product = ForeignKey(Product, ...)

   Meta:
       constraints = [
            CheckConstraint(???)
       ]

Помогите составить ограничение (constraint) в классе Meta модели Image, которое проверяло бы, что количество изображений товара не превышает 10.
Требуется решение на уровне базы данных, а не приложения методом clean().
  • Вопрос задан
  • 43 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@AVSomov
Если говорить именно про уровень БД, даже не про конкретный ЯП, то проблема решается введением для Image поля "порядковый номер" OrderNum (с ограничением значений в 10 шт, например: от 0 до 9) и объявляем уникальный индекс на пару полей Product + OrderNum.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
Currently, CHECK expressions cannot contain subqueries nor refer to variables other than columns of the current row (see Section 5.4.1). The system column tableoid may be referenced, but not any other system column.
Так явно не сделать у постгреса, или писать триггер, или с уникальность поиграть, как предложили.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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