Django порядок моделей по индивидуальному алгоритму Используя разницу между текущим временем и временем создания - PullRequest
0 голосов
/ 19 июня 2020

Django версия 2.1.15 Python версия 3.7.4

Djn go settings.py

LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'

Я не знаком с Engli sh. Я напишу на Engli sh как можно сложнее.

Django порядок моделей по индивидуальному алгоритму Использование разницы между текущим временем и временем создания

моя модель is

models.py

class Review(models.Model):
   title = models.CharField(max_length = 100)
   content = models.TextField()
   movie = models.ForeignKey(Movie,on_delete=models.CASCADE)
   user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete = models.CASCADE)
   like_users=models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='like_reviews')
   created_at=models.DateTimeField(auto_now_add=True)
   updated_at=models.DateTimeField(auto_now=True)

Я хочу по убыванию order_by (Count (like_users) / (current_time - created_at + 60)) Просмотреть модель

(current_time-created_at): я хочу изменить разницу между двумя часами на минуты. (целое число)

Я тестировал эти вещи.

from django.db.models import ExpressionWrapper,F,Value
from django.db.models.fields import DurationField,DateTimeField
def test(request):
    now = timezone.localtime()
    test = Review.objects.annotate(diff_time=(ExpressionWrapper(Value(now, DateTimeField()) - F('created_at'), output_field=DurationField()))).annotate(diff_value=F('diff_time')+60).values()

Но не удалось. Как я могу получить желаемые результаты?

Я использовал переводчика, чтобы задавать вопросы, но надеюсь, что мои намерения ясно переданы. Мне очень жаль мой бедный Энгли sh.

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете попробовать что-то вроде этого:

from django.utils import timezone
from django.db.models import F

Review.objects.annotate(time_since_creation=timezone.now()-F('created_at')).order_by('-time_since_creation')

Не был уверен, каким способом вы хотите сделать заказ, но вы можете поиграть со знаком минус, чтобы получить то, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...