link = models.URLField(max_length=500, blank=True, default='')
我已经将max_length设置为500,但每次当我尝试使用长度超过200个字符的url来设置该字段时,它仍会抛出错误,显示 确保此值最多有200个字符(它有327个)。
这是Django的限制还是我忘记设置了什么?
link = models.URLField(max_length=500, blank=True, default='')
我已经将max_length设置为500,但每次当我尝试使用长度超过200个字符的url来设置该字段时,它仍会抛出错误,显示 确保此值最多有200个字符(它有327个)。
这是Django的限制还是我忘记设置了什么?
你忘记实际更新/迁移你的数据库了。这应该在初始的syncdb
时发生,并且理想情况下应该通过一个适当的数据库迁移,使用Django 1.6及以下版本的django-south,或者使用即将发布的Django1.7+的新Django迁移框架。
为了开发目的,您可以重置您的数据库(这将删除所有数据!)并重新创建:
$ ./manage.py reset appname
$ ./manage.py syncdb
$ ./manage.py schemamigration --auto appname
$ ./manage.py syncdb --migrate
URLField
基于CharField
。这意味着无论您定义什么max_length
,CharField
的长度限制也适用于URLField
(请参见https://docs.djangoproject.com/en/3.0/ref/models/fields/#urlfield - 这个答案是针对Django 1.9的,当我最初写它时,这仍然适用于2020年的Django 3.0)。max_length=200
,MySQL目前处理UTF-8文本的方式也可能存在问题。您可以在https://serversforhackers.com/mysql-utf8-and-indexing或MySQL 5.7手册中找到更多信息http://dev.mysql.com/doc/refman/5.7/en/charset-unicode-upgrading.html。URLField
。