Ich hätte gerne ein CharField mit fester Länge in meinem Modell. 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 sowohl max_length als auch min_length gleichzeitig 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, dass das volumenumber
genau 4 Zeichen sein muss.
IE, wenn jemand '4b' Django einfügt, gibt einen Fehler aus, weil er eine Zeichenfolge von 4 Zeichen erwartet.
Also habe ich es mit versucht
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 scheint, dass 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