Превращать в прописные буквы текст models. CharField () в Джанго Пайтоне

Кто-то знал бы о какой-то функции или как превращать в прописные буквы текст, полученный от поля посредством form?

Мой случай этот:

DNI = models.CharField(max_length=9, null=True)
Nombre = models.CharField(max_length=60, null=True)
Apellidos = models.CharField(max_length=60, null=True)

Я хочу, чтобы, подобрав эти поля, они были сделаны в прописной букве.

3
задан 22.09.2016, 13:49
3 ответа

У тебя есть этот фантастический ответ, который делает то, в чем ты нуждаешься. В cocnreto, в конце концов твой код остается таким:

DNI = models.CharField(max_length=9, uppercase=True)
Nombre = models.CharField(max_length=60, uppercase=True)
Apellidos = models.CharField(max_length=60, uppercase=True)

Чтобы использовать эту функцию uppercase в поле CharField ты делаешь это таким:

Ты определяешь твою модель:

from django.db import models
from django.utils.six import with_metaclass


class UpperCharField(with_metaclass(models.SubfieldBase, models.CharField)):
    def __init__(self, *args, **kwargs):
        self.is_uppercase = kwargs.pop('uppercase', False)
        super(UpperCharField, self).__init__(*args, **kwargs)

    def get_prep_value(self, value):
        value = super(UpperCharField, self).get_prep_value(value)
        if self.is_uppercase:
            return value.upper()

        return value

И если он возвращает тебе какую-то ошибку south migration issues делать это:

from south.modelsinspector import add_introspection_rules
add_introspection_rules([
    (
        [UpperCharField],
        [],
        {
            "uppercase": ["uppercase", {"default": False}],
        },
    ),
], ["^myapp\.models\.UpperCharField"])
1
ответ дан 24.11.2019, 13:19
  • 1
    Функционируй удивительно, большое спасибо снова. – FangusK 23.09.2016, 12:16

Чтобы перемещать поля в mayГєsculas внутри Джанго Форм podrГ-схвати использовать это:

from django import forms

class UpperField(forms.CharField):

    def to_python(self, value):
        return value.upper()


class TuModeloForm(forms.ModelForm):
    DNI = UpperField()
    Nombre = UpperField()
    Apellidos = UpperField()
2
ответ дан 24.11.2019, 13:19

Ты это можешь объявлять в модели прямо uusando функцию def save ()

class TuModelo(models.Model):
    DNI = models.CharField(max_length=9, null=True)
    Nombre = models.CharField(max_length=60, null=True)
    Apellidos = models.CharField(max_length=60, null=True)

    def save(self, *args, **kwargs):
        self.DNI = (self.DNI).uppercase()
        self.Nombre = (self.Nombre).uppercase()
        self.Apellidos = (self.Apellidos).uppercase()
        return super(TuModelo, self).save(*args, **kwargs)
0
ответ дан 24.11.2019, 13:19