如何在Django中为Postgre数据库注册自定义RangeField
我试着按照文档的说明去做,结果是这样的:
from django.db import models
from django import forms
from django.contrib.postgres.fields import RangeField
from psycopg.types.range import Range
from django.utils.translation import gettext_lazy as _
class TimeRange(Range):
"""Time interval."""
pass
class TimeRangeFieldForm(BaseRangeField):
"""Form for time interval."""
default_error_messages = {'invalid': _('Enter two valid times.')}
base_field = forms.TimeField
range_type = TimeRange
class TimeRangeField(RangeField):
"""Time interval field."""
base_field = models.TimeField
range_type = TimeRange
form_field = TimeRangeFieldForm
def db_type(self, connection):
return 'timerange'
但是还有一个range_register()的东西,我就是搞不懂怎么在代码里使用它。而且当我尝试进行迁移时,出现了这个错误:django.db.utils.ProgrammingError: type "timerange" does not exist LINE 1: ...IDENTITY, "days" smallint[7] NOT NULL, "interval" timerange ...
。请帮我理解一下如何创建自定义的范围字段。另外,我也不明白为什么有DateTimeRangeField和DateRangeField,但没有TimeRangeField……
0 个回答
暂无回答