Me gustaría tener en mi modelo un CharField de longitud fija. En otras palabras, quiero que solo una longitud especificada sea válida.Django: CharField con longitud fija, ¿cómo?
Me trataron de hacer algo como
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
pero me da un error (parece que puedo usar tanto max_length y min_length al mismo tiempo).
¿Hay alguna otra manera rápida?
Gracias
EDIT:
Siguiendo las sugerencias de algunas personas Voy a ser un poco más específico:
Mi modelo es la siguiente:
class Volume(models.Model):
vid = models.AutoField(primary_key=True)
jid = models.ForeignKey(Journals, db_column='jid', null=True, verbose_name = "Journal")
volumenumber = models.CharField('Volume Number')
date_publication = models.CharField('Date of Publication', max_length=6, blank=True)
class Meta:
db_table = u'volume'
verbose_name = "Volume"
ordering = ['jid', 'volumenumber']
unique_together = ('jid', 'volumenumber')
def __unicode__(self):
return (str(self.jid) + ' - ' + str(self.volumenumber))
Lo que quiero es que el volumenumber
debe tener exactamente 4 caracteres.
I.E. si alguien inserta '4b' django da un error porque espera una cadena de 4 caracteres.
Así que probé con
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
pero me da este error:
Validating models...
Unhandled exception in thread started by <function inner_run at 0x70feb0>
Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run
self.validate(display_num_errors=True)
File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/Library/Python/2.5/site-packages/django/core/management/validation.py", line 28, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/Library/Python/2.5/site-packages/django/db/models/loading.py", line 131, in get_app_errors
self._populate()
File "/Library/Python/2.5/site-packages/django/db/models/loading.py", line 58, in _populate
self.load_app(app_name, True)
File "/Library/Python/2.5/site-packages/django/db/models/loading.py", line 74, in load_app
models = import_module('.models', app_name)
File "/Library/Python/2.5/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Users/Giovanni/src/djangoTestSite/../djangoTestSite/journaldb/models.py", line 120, in <module>
class Volume(models.Model):
File "/Users/Giovanni/src/djangoTestSite/../djangoTestSite/journaldb/models.py", line 123, in Volume
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
TypeError: __init__() got an unexpected keyword argument 'min_length'
Eso obviamente no aparece si uso único "max_length" O "min_length".
Leo la documentación en el sitio web de django y parece que tengo razón (no puedo usar ambas cosas juntas), así que estoy preguntando si hay otra manera de resolver el problema.
Gracias de nuevo
¿por qué alguien me dio un valor de -1? ¿es una pregunta estúpida? –
¿Qué error te da? –
Giovanni, sea más específico y publique el error que se planteó. Además, asegúrese de verificar primero los documentos de Django. Cheers – Nacho