Использование 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.