django полиморф многих-многих c фильтрация аннотаций по polymorphic_ctype - PullRequest
0 голосов
/ 31 января 2020

что у меня есть: целевая модель, связанная с моделью «многие ко многим» с полиморфной моделью c. Для каждого объекта в целевой модели я хочу объединить максимальное значение некоторого общего для столбца модели polymorphi c, но для конкретного подкласса модели c polymorphi c. Что я пробовал: '' '

from django.db.models import Max, Q
from django.contrib.contenttypes.models import ContentType
from polymorphic.models import PolymorphicModel

class manytomanymodel(PolymorphicModel):
      commonfloat = model.FloatField()

class A(manytomanymodel):
      somefields = ...
class B(manytomanymodel):
      someotherfields = ....

class TargetModel(model.Model):
      manytomany = models.ManyToManyField(manytomanymodel)


TargetModel.annotate(targetmax=Max("manytomany__commonfloat",  filer=Q(manytomany___polymorphic_ctype=ContentType.objects.get_for_model(A)))

' ''

в результате я получаю: '' '

/export/django/venv/lib64/python3.6/site-packages/django/db/backends/utils.py in _execute(self, sql, params, *ignored_wrapper_args)
     82                 return self.cursor.execute(sql)
     83             else:
---> 84                 return self.cursor.execute(sql, params)
     85 
     86     def _executemany(self, sql, param_list, *ignored_wrapper_args):

ProgrammingError: syntax error at or near "("
LINE 1: ... MAX("manytomany_manytomanymodel"."commonfloat") FILTER (WHERE "he...

' '' Похоже, запрос будь абсолютно ле git для меня и прекрасно работает без фильтрации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...