модель моего поста
class Post(models.Model):
user=models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL, related_name='post_owner')
title=models.CharField(max_length=250)
body=models.CharField(max_length=1000)
slug=models.SlugField(max_length=100, blank=True)
category_name=models.ForeignKey(Category,null=True, on_delete=models.SET_NULL)
created_at=models.DateTimeField(auto_now=False, auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
published=models.BooleanField(null=True)
publish_date=models.DateTimeField(blank=True, null=True)
модель моих лайков
class Likes(models.Model):
token=models.ForeignKey(User, related_name='users')
obj=models.ForeignKey(Post, related_name='likes')
модель количества моих лайков
class LikesCount(models.Model):
likes_count=models.PositiveIntegerField()
obj=models.OnetoOneField(Post, related_name='likescount')
теперь как получить количество лайков из моделей постов / просмотрев на момент публикации сообщения
Post.objects.filter(published=True).select_related(likescount__likes_count).order_by(likescount__likes_count)
, он будет выбирать только те сообщения, чей лайк_счет создан в модели LikesCount. то есть он делает левое внутреннее соединение. он не извлекает сообщение, чьи лайк-колы не созданы в модели LikesCount.
my logi c для счетчиков лайков: объект likes_count создается при создании первых лайков в модели Likes, а не при создании поста.