Эквивалент запроса SQL Server в запросе Django к PostgreSQL?

Я работаю над сайтом Django с внешней базой данных, доступной только для чтения, которая мне не принадлежит. Предположим, у меня есть следующие модели:

class ModelF(models.Model):
    vref = models.CharField(..)
    nbr = models.CharField(..)
    dateDebut = models.DateField(..)
    dateFin = models.DateField(..)
    nature = models.CharField(..)
    type = models.CharField(..)
    plle = models.CharField(..)

class ModelP(models.Model):
    name = models.CharField(..)
    ref = models.CharField(..)

class Inter(models.Model):
    key = models.CharField(..)
    n_vers = models.DecimalField(..)
    date = models.DateField(..)

Я ищу Django запрос, эквивалентный этому SQL:

Select P.name, F.nature, F.dateDebut, F.dateFin, F.nbr, F.plle,
       SUM( iif(isnumeric(F.nbr)=1, cast(F.nbr as numeric(5, 2)), 0)) Over (Order by F.dateDebut, nature) as NCumul
from ModelF F, ModelP P
Where F.vref = P.ref
      And plle in (Select distinct key from Inter where n_vers = 100)
      And F.type = 'TYPE1'
      And DATEDIFF(DAY, F.dateDebut, (Select date from Inter where n_vers = 100)) <= 365

Вот что я сделал до сих пор:

keys = Inter.objects.filter(n_vers=100).distinct('key').values_list('key', flat=True)
results = ModelF.objects.filter(key__in=keys, type = 'TYPE1',).annotate(
            NCumul=Window(
                expression=Sum(Case(
                                    When(nbr__isnull=False, then=Decimal(F('nbr'))),
                                    default = 0,
                                    output_field=DecimalField()
                            )),
                partition_by=[F('nature')],
                order_by=F('dateDebut').asc(),
            ),
        )

но я получаю ошибку

преобразование из F в десятичную систему не поддерживается

Я также спрашиваю, если возможно, как реализовать часть DATEDIFF(DAY, F.dateDebut, (Select date from Inter where n_vers = 100))?

Заранее благодарю всех за любую помощь

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