from django.db import models
from django.conf import settings
from django.utils import timezone
class Blog(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return f"{self.title}"
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='comments')
blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comments')
comment = models.TextField()
published_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return f"{self.comment}"
< /code>
Я попробовал Annotate () с помощью
Blog.objects.annotate(avg_comment_length = Avg(Length(comments__comment)))
но length() получает общее количество символов в комментарии, а не количество слов. Как я могу изменить это, чтобы рассчитать среднее количество слов в комментариях для каждого блога?
class Comment(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='comments') blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comments') comment = models.TextField() published_date = models.DateTimeField(default=timezone.now)
def __str__(self): return f"{self.comment}"
< /code> Я попробовал Annotate () с помощью Blog.objects.annotate(avg_comment_length = Avg(Length(comments__comment)))[/code] но length() получает общее количество символов в комментарии, а не количество слов. Как я могу изменить это, чтобы рассчитать среднее количество слов в комментариях для каждого блога?