#python #django #django-rest-framework
Вопрос:
Я хочу, чтобы у меня был способ каким-то образом отображать сообщение об ошибке/приглашение на внешний интерфейс (может быть ответ json), всякий раз, когда пользователь пытается добавить объект, в моем случае у 1 пользователя не может быть более 50 задач, хранящихся внутри бд, моя модель бд проста, это просто модель задачи и модель пользователя, у каждой задачи есть идентификатор пользователя с внешним ключом. Я делал это в голанг-горме с помощью крючков, есть ли какой-либо аналогичный метод в Джанго, чтобы сделать это эффективно?
Комментарии:
1. Можете ли вы поделиться формой (и представлением), в которой вы хотите добавить задачи пользователю?
Ответ №1:
Вы можете переопределить метод очистки вашей Task
модели, чтобы вызвать a 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')
Комментарии:
1. Я думаю, что это не сработает, так
clean
как метод вызывается при обновлении значений и до сохранения объекта формой. Но поле «многие ко многим» обновляется после сохранения объекта модели. Так что проверка «слишком ранняя».2. Вероятно, вы можете проверить это в форме, чтобы это было подтверждено перед сохранением объекта.