Рассмотрим следующий код:
(Используя Python 3,7 и Django 2,2)
from django.core.validators import MinValueValidator
from django.db import models
class Parent(models.Model):
limit = models.IntegerField(validators=[MinValueValidator(1)])
class Child(models.Model):
parent = models.ForeignKey(Parent, related_name='children')
Можно ли добавить CheckConstraint
так, чтобы количество разрешенных Дочерний элемент для каждого Родителя ограничен полем limit
в Parent
. Например, что-то вроде следующего в таблице Parent
:
models.CheckConstraint(
check=models.Q(limit__gte=models.Count('children')),
name='children_limit',
)
Но это не удается с
django.core.exceptions.FieldError: Joined field references are not permitted in this query
Чтобы уточнить: я действительно предпочел бы сделать это ограничение базы данных, я знаю, как это сделать на Python земле.