Ограничение количества внешних ключей в чистом методе Django

Я не пытаюсь ограничить количество внешних ключей в формах или представлениях, я пытаюсь сделать это через clean method в models.py. Я пытался найти что-то об этом, но дело в том, что когда вы сохраняете модель с внешним ключом, метод clean не получает новый связанный объект, потому что сначала он сохраняет args модели, а затем внешние ключи, поэтому когда вы пытаетесь добавить что-то вроде этого:

class RelatedModel(models.Model):
    fields...

    def clean(self) -> None:
        from django.core.exceptions import ValidationError
        limit = 5

        if self.related_name:
            if self.related_name.count() > limit:
                raise ValidationError(f"The limit of related objects is { limit }")

        return super().clean()

class Model(models.Model):
    related_model = models.ForeignKey(RelatedModel, related_name="related_name")

Вычисление count() не является реальным, потому что вы просто получаете экземпляр модели с предыдущими related_models, но не с новыми, поэтому вы не можете ограничить количество таким образом. Есть ли способ добиться этого?

Вернуться на верх