Будет ли экземпляр модели Django всегда заполнен при вызове save()?

У меня есть модель, в которой я переопределяю функцию save() для добавления SearchVector'ов. Мне нужно предварительно обработать одно из полей экземпляра, поэтому я переопределяю функцию сохранения:

class Student(models.Model):
  first_name = models.CharField(max_length=255, default="")
  last_name = models.CharField(max_length=255, default="")
  search_vector = SearchVectorField(null=True)

  def save(self, *args, **kwargs):
    sv = SearchVector(Value(self.first_name)) + SearchVector(Value(self.last_name))
    if len(self.last_name) > 3:
      sv += SearchVector(Value(self.last_name[0:3]))
    self.search_vector = sv
    super().save(*args, **kwargs)

Могу ли я ожидать, что все поля (first_name & last_name) экземпляра всегда будут заполнены внутри функции save()? Я заметил, что функция загрузки экземпляра from_db, кажется, предполагает, что экземпляры модели могут быть созданы с неполным набором полей. Означает ли это, что first_name может быть None при вызове функции save()?

Вернуться на верх