Я получаю ошибку при ограничении внешних ключей
Цель: Я хочу ограничить (20) количество студентов в группе.
Я пытался сделать валидацию (основанную на этом вопросе - Limit number of foreign keys), но возникла проблема - она работает, когда я пытаюсь сделать 21 студента в группе в моей панели администратора Django, но когда я пытаюсь изменить логин (или другие параметры) студента (в группе на данный момент 20 студентов), который уже в группе, возникает ошибка, потому что кажется, что у меня уже есть 20 студентов и я пытаюсь добавить нового
def validate_number_of_students(value):
if User.objects.filter(group=value).count() >= 20:
raise ValidationError('Already 20 students in group (20)')
class User(AbstractUser):
role = models.CharField(max_length=max([len(role[0]) for role in ROLES]),
choices=ROLES,
default=USER,
)
group = models.ForeignKey('structure.Group',
on_delete=models.SET_NULL,
related_name='users',
blank=True,
null=True,
validators=(validate_number_of_students, )
)
Я пытался использовать этот метод с constraint
(ограничить количество внешних ключей с помощью Django CheckConstraint), но получаю ошибку, может я что-то делаю не так? (У меня два приложения - структура с моделью Group и пользователи с моделью User)
models.CheckConstraint(
name="limit_students_in_group",
check=IntegerLessThan(
models.Count("group", filter=models.Q(group=models.F("group"))),
20),
)