Запретить Django Models создавать объект после достижения определенного количества объектов в базе данных для определенного пользователя
Я хочу иметь метод, чтобы как-то показать ошибку/предложение на переднем конце (может быть json ответ), каждый раз, когда пользователь пытается добавить объект, в моем случае, 1 пользователь не может иметь более 50 задач, хранящихся в базе данных, моя модель базы данных проста, это только модель задач и модель пользователей, каждая задача имеет внешний ключ user_id. Я делал это в golang-gorm с помощью хуков, есть ли аналогичный метод в Django, чтобы сделать это эффективно?
Вы можете переопределить метод clean вашей Task
модели, чтобы поднять вопрос ValidationError
, если у связанного пользователя уже есть 50 задач.
Что-то вроде этого :
class Task(models.Model):
user = models.ForeyKey(User, on_delete=models.CASCADE, related_name='tasks')
def clean(self):
if self.user.tasks.count() >= 50:
raise ValidationError('User cannot have more than 50 tasks')