Использование raw sql в модели django по умолчанию

Я пытаюсь установить значение по умолчанию для столбца модели с помощью функции postgres

currval(pg_get_serial_sequence('public.user','id'))

как рекомендуется в ответе на stackoverflow, связанном с posgres.

Я пытался

from django.contrib.auth.models import AbstractUser
from django.db.models.expressions import Func
from django.forms import IntegerField

class CurrVal(Func):
    # noinspection SpellCheckingInspection
    function = "CURRVAL"
    output_field = IntegerField()

class PgGetSerialSequence(Func):
    function = "pg_get_serial_sequence"

class User(AbstractUser):
   substitute_user = models.ForeignKey(
       'user.User',
       null=True,
       on_delete=models.SET_DEFAULT,
       db_default=CurrVal(PgGetSerialSequence('public.user', 'id')),
    )

Однако он терпит неудачу при

user.User.substitute_user: (fields.E012) CurrVal(PgGetSerialSequence(F(public.user), F(id))) cannot be used in db_default.
Вернуться на верх