Ограничение количества внешних ключей в чистом методе 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, но не с новыми, поэтому вы не можете ограничить количество таким образом. Есть ли способ добиться этого?