Когда вы используете экземпляр ModelForm для создания / редактирования модели, метод clean () модели гарантированно будет вызван.Итак, если вы хотите удалить пробелы из поля, вы просто добавляете метод clean () в вашу модель (не нужно редактировать класс ModelForm):
class Employee(models.Model):
"""(Workers, Staff, etc)"""
name = models.CharField(blank=True, null=True, max_length=100)
def clean(self):
if self.name:
self.name = self.name.strip()
Я считаю следующий фрагмент кода полезным:он обрезает пробелы для всех полей модели, которые подклассируют либо CharField, либо TextField (так что это также перехватывает поля URLField) без необходимости указывать поля по отдельности:
def clean(self):
for field in self._meta.fields:
if isinstance(field, (models.CharField, models.TextField)):
value = getattr(self, field.name)
if value:
setattr(self, field.name, value.strip())
Кто-то правильно указал, что вам не следуетиспользуя null = True в объявлении имени.Рекомендуется избегать значения null = True для строковых полей, в этом случае приведенное выше упрощается до:
def clean(self):
for field in self._meta.fields:
if isinstance(field, (models.CharField, models.TextField)):
setattr(self, field.name, getattr(self, field.name).strip())