Ошибка "invalid literal for int() with base 10:" при изменении DateTimeField на DateField в models.py | Django

Я хочу показать, сколько постов делается каждый день, поэтому я написал такой код:

class ServerInsightsView(View):
    def get(self, request, server_tag):
        server = Server.objects.get(tag=server_tag)
        post_daily_count =server.posts.all().values('created').annotate(dailycount=Count('created')).order_by() #to get the number of posts each day depending on the DateTimeField
        return render(request, 'servers/insights.html', {'server':server, 'post_daily_count': post_daily_count})

Этот код работает, но поскольку created является DateTimeField, он группирует данные в зависимости от даты и времени, например (2022, 11, 15, 16, 24, 10, 577648) и (2022, 11, 15, 16, 40, 39, 224605). находятся в одном и том же дне, но в разных Time.

поэтому, чтобы исправить это, я изменил DateTimeField на DateField:

Вот models.py:

class Post(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField(null=True, blank=True)
    saved = models.ManyToManyField(User, blank=True, related_name='saves')
    upvotes = models.ManyToManyField(User, blank=True, related_name='upvotes')
    downvotes = models.ManyToManyField(User, blank=True, related_name='downvotes')
    votes_count = models.IntegerField(default=0)
    server = models.ForeignKey(Server, on_delete=models.CASCADE, related_name='posts')
    creator = models.ForeignKey(User , on_delete=models.CASCADE, related_name='posts', null=True)
    created = models.DateField(auto_now_add=True) #was DateTimeField
    updated = models.DateField(auto_now=True) #was DateTimeField

и теперь я получаю эту ошибку после этого изменения:

недопустимый литерал для int() с базой 10: b'15 16:24:10.577648'

Аннотация даты и группировка по ней с помощью TruncDate:

from django.db.models.functions import TruncDate


class ServerInsightsView(View):
def get(self, request, server_tag):
    server = Server.objects.get(tag=server_tag)
    post_daily_count = (
        server.posts.all()
        .annotate(date=TruncDate('created'))
        .values('date')
        .annotate(dailycount=Count('date'))
        .order_by()
    )
    return render(
        request,
        'servers/insights.html',
        {'server': server, 'post_daily_count': post_daily_count},
    )
Вернуться на верх