Django функция агрегирования в поле Hstore - PullRequest
1 голос
/ 30 января 2020

Я использую функцию djagno postgres из https://docs.djangoproject.com/en/3.0/ref/contrib/postgres/fields/

Мне нужно использовать функцию агрегирования в поле hstore, но получаю ошибку ...

Здесь мое поле models.py

    def get_default_dict():
        return {}


    class Post(models.Model):
        .................
        extra_details = HStoreField(default=get_default_dict)


        class Meta:
            db_table = 'post'

extra_details сохранить как {"ab c": 1}, {"ab c": 100}, {"ab c": 433}

Теперь мне нужно получить объект post, где значение extra_details ['ab c'] самое высокое (например, 433)

Я пытаюсь сделать как

   from django.db.models import Avg, Max

   Post.objects.filter(id__in=[1,2,3,4,5,..]).annotate(ab=Max('extra_details__abc'))

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

  *** django.db.utils.ProgrammingError: function max(hstore) does not exist
  LINE 1: ......."statistics", MAX("post..
  HINT:  No function matches the given name and argument types. You might need to add 
explicit type casts.

Как я могу использовать агрегатную функцию в этой ситуации?

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