Django первое слово поля char

В моей модели в django есть символьное поле с максимальной длиной 500 символов. Я работаю с базой данных PostgreSQL:

class Chat(models.Model):
 
    message = models.CharField(max_length=500)
    username = models.CharField(max_length=255)
    date = models.DateTimeField(auto_now_add=True)

    @property
    def first_word(self):
        return self.message.split(" ")[0]

Мне интересно оценить первое слово каждого сообщения и сделать некоторую агрегацию. Первое слово каждого сообщения может быть разной длины, поэтому я не могу использовать функции базы данных Left, Right или Substr:

queryset = Chat.objects.annotate(command=F("first_word")).values("command")
            .annotate(counts=Count("command"))
            .order_by("-counts")

Очевидно, что мой queryset не работает, потому что я не могу вызывать методы модели в запросе к базе данных. Однако есть ли способ сделать это с помощью других функций базы данных?

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