Django: CharField mit fester Länge, wie?
Ich möchte in meinem Modell ein CharField mit fester Länge haben. Mit anderen Worten, ich möchte, dass nur eine bestimmte Länge gültig ist.
Ich habe versucht, so etwas zu tun
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
aber es gibt mir einen Fehler (es scheint, dass ich gleichzeitig max_length und min_length verwenden kann).
Gibt es einen anderen schnellen Weg?
Vielen Dank
BEARBEITEN:
Nach den Vorschlägen einiger Leute werde ich etwas genauer sein:
Mein Modell ist das:
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))
Was ich will ist das dasvolumenumber
muss genau 4 Zeichen lang sein
I.E. Wenn jemand '4b' einfügt, gibt Django einen Fehler aus, weil er eine Zeichenkette mit 4 Zeichen erwartet.
Also versuchte ich es mit
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
aber es gibt mir diesen Fehler:
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'
Das erscheint natürlich nicht, wenn ich nur "max_length" ODER "min_length" verwende.
Ich habe die Dokumentation auf der Django-Website gelesen und es sieht so aus, als ob ich recht habe (ich kann nicht beide zusammen verwenden), also frage ich, ob es einen anderen Weg gibt, das Problem zu lösen.
Danke noch einmal