Будет ли экземпляр модели 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()?