Tôi wold muốn có trong mô hình của tôi một CharField với chiều dài cố định. Nói cách khác tôi muốn rằng chỉ có một chiều dài được chỉ định là hợp lệ.Django: CharField với độ dài cố định, như thế nào?
tôi đã cố gắng để làm một cái gì đó giống như
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
nhưng nó mang lại cho tôi một lỗi (có vẻ như là tôi có thể sử dụng cả hai max_length và MIN_LENGTH cùng một lúc).
Có cách nào khác nhanh không?
Cảm ơn
EDIT:
Tiếp theo những gợi ý của một số người mà tôi sẽ được một chút cụ thể hơn:
Mô hình của tôi là thế này:
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))
Những gì tôi muốn là volumenumber
phải chính xác 4 ký tự.
I.E. nếu ai đó chèn '4b' django đưa ra một lỗi vì nó dự kiến một chuỗi gồm 4 ký tự.
Vì vậy, tôi cố gắng với
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
nhưng nó mang lại cho tôi lỗi này:
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'
Đó rõ ràng là không xuất hiện nếu tôi chỉ sử dụng "max_length" OR "MIN_LENGTH".
Tôi đọc tài liệu trên trang web django và có vẻ như tôi đúng (tôi không thể sử dụng cả hai), vì vậy tôi hỏi liệu có cách nào khác để giải quyết vấn đề không.
Cảm ơn một lần nữa
tại sao người nào đó cho tôi giá trị -1? nó là một câu hỏi ngu ngốc? –
Lỗi nào cung cấp cho bạn? –
Giovanni, cụ thể hơn và đăng lỗi nào được nêu ra. Ngoài ra, hãy chắc chắn bạn kiểm tra các tài liệu Django đầu tiên. Chúc mừng – Nacho