Allways there is a way to improve the code, but  if that not run, then try
with CYTHON

Gabriel Araya Garcia
GMI - Desarrollo de Sistemas Informáticos




El jue, 9 feb 2023 a las 10:09, Andréas Kühne (<[email protected]>)
escribió:

> Not if you want it to be fast. Python itself is slow - so you should try
> to offload most of the computation on the database. So filtering would need
> to be done on database fields as well.
>
> Otherwise you would need to load all of the rows into memory and then do
> the filtering there.
>
> If you want to continue along the route you have taken now - you probably
> could solve it with annotated queries - something like this:
>
> https://stackoverflow.com/questions/1396264/how-to-sort-by-annotated-count-in-a-related-model-in-django
>
> Regards,
>
> Andréas
>
>
> Den tors 9 feb. 2023 kl 13:21 skrev Chelsea Fan <
> [email protected]>:
>
>> understood, is there any way to filter objects by method value?
>>
>> On Thu, Feb 9, 2023 at 4:42 PM Andréas Kühne <[email protected]>
>> wrote:
>>
>>> No.
>>>
>>> Ordering works by using the database to order the models. It therefore
>>> needs to be a database field - otherwise the database can't order by the
>>> field?
>>>
>>> Regards,
>>>
>>> Andréas
>>>
>>>
>>> Den tors 9 feb. 2023 kl 12:09 skrev Chelsea Fan <
>>> [email protected]>:
>>>
>>>> hello guys, Is it possible to use model method value to ordering model
>>>> objects in meta class?
>>>>
>>>> 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
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/django-users/CAJwZndfmes4g2KWUB3Fz6wNRORQ40Fxj_NYwYKWCF6DX96OVyg%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/django-users/CAJwZndfmes4g2KWUB3Fz6wNRORQ40Fxj_NYwYKWCF6DX96OVyg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Django users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/django-users/CAK4qSCfpaVQ1YXMbVae26RLgsYYBcLRMcpgQOEm9z3%2B6NpN5Ww%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/django-users/CAK4qSCfpaVQ1YXMbVae26RLgsYYBcLRMcpgQOEm9z3%2B6NpN5Ww%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/CAJwZnddOzyjuawMFe4pZtn4oj8YxZDBX_N1SK492G3RhENyVqg%40mail.gmail.com
>> <https://groups.google.com/d/msgid/django-users/CAJwZnddOzyjuawMFe4pZtn4oj8YxZDBX_N1SK492G3RhENyVqg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CAK4qSCf02LMA9tN_AEijDnM58PcT1uk8Q0zmr%2BORBc_bZXwSaA%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CAK4qSCf02LMA9tN_AEijDnM58PcT1uk8Q0zmr%2BORBc_bZXwSaA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAKVvSDB%2BJqyeN%3D%2BNp3r0ybgtTSGDpjEkxaYC-yQ%2BZoO32CVVGw%40mail.gmail.com.

Reply via email to