Django ManyToMany CheckConstraint IntegerField

У меня есть несколько моделей, 1 абстрактная, и 2, которые наследуются от абстрактной модели с отношением ManyToMany. Одна модель получает свои члены от другой модели. Я хочу реализовать ограничение на эту модель, чтобы ее члены не могли быть больше, чем Sum of remaining_members в исходных группах. Я создал выражение Q, которое выражает то, чего я хочу достичь, но я знаю, что это не правильный способ сделать это. Как я могу создать ограничение для моделей, связанных полем ManyToMany?

class AbstractGroup(models.Model):
    members = models.IntegerField()
    
    class Meta:
        abstract=True

class OriginalGroup(AbstractGroup):
    remaining_members = models.IntegerField()
    new_group_members = ManyToManyField(NewGroup, related_name=new_group, related_query_name=new_group)


class NewGroup(AbstractGroup):
    name = models.CharField()

    class Meta:
        constraints = [
            models.CheckConstraint( Q(members__lte=original_groups__sum__remaining_members, name='%(app_label)s_%(class)s_available_members' ) )
        ]
    
Вернуться на верх