Изменение регистра (верхний / нижний) при добавлении данных через сайт администратора Django
Вопрос
Я настраиваю админ-сайт моего нового проекта, и у меня есть небольшие сомнения относительно того, как мне поступить, при нажатии «Сохранить» при добавлении данных через админ-сайт все преобразуется в верхний регистр ... р>
Изменить: Хорошо, я знаю свойство .upper, и я сделал представление, я бы знал, как это сделать, но мне интересно, есть ли какое-либо свойство, доступное для конфигурации поля на сайте администратора: P р>
Решение
Если ваша цель состоит в том, чтобы при сохранении в разделе администратора только преобразовывать вещи в верхний регистр, вам нужно создать форму с настраиваемой проверкой , чтобы внести изменения в регистр:
class MyArticleAdminForm(forms.ModelForm):
class Meta:
model = Article
def clean_name(self):
return self.cleaned_data["name"].upper()
Если ваша цель состоит в том, чтобы всегда иметь значение в верхнем регистре, тогда вам следует переопределить сохранение в поле модели:
class Blog(models.Model):
name = models.CharField(max_length=100)
def save(self, force_insert=False, force_update=False):
self.name = self.name.upper()
super(Blog, self).save(force_insert, force_update)
Другие советы
Обновленный пример из документации предлагает использовать аргументы arg, kwargs как:
Django будет время от времени расширять возможности встроенных модельные методы, добавление новых аргументов. Если вы используете * args, ** kwargs в ваши определения методов, вы гарантированно, что ваш код будет автоматически поддерживать эти аргументы при их добавлении.
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def save(self, *args, **kwargs):
do_something()
super(Blog, self).save( *args, **kwargs) # Call the "real" save() method.
do_something_else()
вы должны переопределить сохранение ( ) . Пример из документации:
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def save(self, force_insert=False, force_update=False):
do_something()
super(Blog, self).save(force_insert, force_update) # Call the "real" save() method.
do_something_else()