формы django и обработка метаданных для объектов

#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()