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 не работает, потому что я не могу вызывать методы модели в запросе к базе данных. Однако есть ли способ сделать это с помощью других функций базы данных?