#django #validation #hidden #django-forms
#django #проверка #скрыто #django-forms
Вопрос:
Допустим, у меня есть эта модель:
class Job(models.Model):
name = models.CharField(max_length=32, unique=True) #name of job
start = models.TimeField() #start time of job
end = models.TimeField() #end time of job
days = models.ManyToManyField(Day) #week days the job should be started on
Допустим, у меня также есть функция, которая принимает поля start, end и days и хэширует битовый массив из 35 040 бит (‘111100011 …’). (каждый бит на самом деле представляет собой 15-минутный фрагмент, в год 35040 фрагментов)
Я не обязательно ожидаю, что пользователь введет все эти биты, я хочу сделать это для них за кулисами. Однако, как мне «прикрепить» эти битовые данные к объекту задания, не требуя от пользователя вводить их в моей форме модели и не пытаясь проверить его данные?
Ответ №1:
Добавьте необязательное поле в вашу модель (оно будет исключено из проверки формы):
hash = models.CharField(max_length=.., Null=true, Blank=true)
затем сгенерируйте его при сохранении в базе данных (переопределяя метод сохранения модели):
def save(self):
self.hash = calc(...)
super(MyModel, self).save()