У меня есть модель с полями first_name
и last_name
, и они используются для создания имени файла в ImageField
. Аргумент для upload_to
в ImageField
- это метод, который генерирует имя файла с информацией об этом экземпляре.
Когда этот экземпляр модели будет сохранен, будут ли вызовы .strip()
в clean()
применяться к полям, прежде чем они будут использованы для создания имени файла? Или мне нужно сделать .strip()
для данных, когда они используются, а также в чистом виде?
models.py:
def set_path(instance, filename):
"""
Set the path to be used for images uploaded (trainer photos).
"""
return u'about/%(first)s_%(last)s.%(ext)s' % {
'first': instance.first_name.strip(' \t').lower(), #.strip() required?
'last': instance.last_name.strip(' \t').lower(), #.strip() required?
'ext': filename.split('.')[-1]
}
class Trainer(models.Model):
"""
Trainers and their associated information.
"""
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
image = models.ImageField(upload_to=set_path, blank=True, null=True,
verbose_name="Trainer image")
description = models.TextField()
class Meta:
unique_together = ('first_name', 'last_name',)
def clean(self):
super(Trainer, self).clean()
# Are these calls to .strip() applied before the fields
# get used as `instance` to determine a filename?
self.first_name = self.first_name.strip(' \t')
self.last_name = self.last_name.strip(' \t')
self.description = self.description.strip(' \t\r\n')