Hig*_*ife 41 django postgresql url performance django-models
据我所知,TextField当你使用PostgreSQL数据库时,你应该总是使用一个变长字符串,因为a TextField和a 之间的速度差异CharField可以忽略不计PostgreSQL.我是Django的新手,并且正在考虑TextField在我的数据库中使用一个可变长度的URL.我想知道使用它是否有任何好处URLField?使用TextField而不是URLField网址会被视为不良形式吗?
okm*_*okm 61
URLField实际上是CharField,支持基于Regexp的URL模式检查和在线验证器(由基于RegEx的验证器替换),如果不关心URL的长度限制,可以使用TextField
from django.core.validators import URLValidator
# in model
field = models.TextField(validators=[URLValidator()])
Run Code Online (Sandbox Code Playgroud)
此外,使用CharField或TextField取决于您是否希望字段具有最大长度约束,以及哪种元素类型更适合编辑:textarea或input.在PostgreSQL方面,没有显着差异.
试试这个课程:
class LongURLField(TextField):
description = 'Long URL'
def __init__(self, verbose_name=None, name=None, **kwargs):
TextField.__init__(self, verbose_name, name, **kwargs)
self.validators.append(validators.URLValidator())
def formfield(self, **kwargs):
# As with TextField, this will cause URL validation to be performed
# twice.
defaults = {
'form_class': forms.URLField,
}
defaults.update(kwargs)
return super(LongURLField, self).formfield(**defaults)
Run Code Online (Sandbox Code Playgroud)