Как зарегистрировать пользовательское RangeField в postgre db с помощью django

Я попытался следовать docs и вот к чему я пришел:

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...

Вернуться на верх