Как я могу использовать метод модели django для упорядочивания в мета-классе
class Post(models.Model):
title = models.CharField(max_length=255, verbose_name="ady")
text = RichTextField(verbose_name="text")
tagList = models.ManyToManyField(Tag, verbose_name="taglar", related_query_name="tagList")
image = models.ImageField(upload_to="postImage/", verbose_name="surat")
seen = models.ManyToManyField(UserId,verbose_name="görülen sany", blank=True, related_name="gorulen")
like = models.ManyToManyField(UserId,verbose_name="like sany", blank=True)
share = models.PositiveIntegerField(verbose_name="paýlaşylan sany", null=True, blank=True, default="0")
createdAt = models.DateTimeField(auto_now_add=True, verbose_name="goşulan güni")
class Meta:
verbose_name_plural="Makalalar"
# ordering = ("-createdAt",)
ordering = ["-hotness",]
def __str__(self):
return self.title
def likes(self):
return self.like.count()
likes.short_description = "Like sany"
likes.allow_tags = True
def seens(self):
return self.seen.count()
seens.short_description = "Görülen sany"
seens.allow_tags = True
@property
def hotness(self):
return self.likes() + self.seens() + self.share
Как я могу использовать значение функции hotness для упорядочивания в мета-классе
Свойство hotness, которое вы определили с помощью декоратора @property
, использует два метода, likes
и seens
, которые используются для возврата количества связанных объектов. Однако эти методы возвращают количество связанных объектов путем вызова метода count
на менеджере связанных объектов, который возвращает целое число.
Свойство hotness
должно просто возвращать сумму подсчета связанных объектов, а не вызывать методы likes
и seens
так:
class Post(models.Model):
# ... other fields ...
@property
def hotness(self):
return self.like.count() + self.seen.count() + self.share
class Meta:
verbose_name_plural="Makalalar"
ordering = ["-hotness",]