2016-12-06 3 views
0

models.py:Получить самую верхние понравившийся пост упорядоченного по времени в Джанго

class Post(models.Model): 
    author = models.ForeignKey('User') 
    text = models.TextField(max_length=320) 
    created_date = models.DateTimeField(default=timezone.now) 

class Likes(models.Model): 
    post = models.ForeignKey('Post') 
    liker = models.ForeignKey('User') 
    created_date = models.DateTimeField(default=timezone.now) 

    class Meta: 
     unique_together = ('post', 'liker') 

Я хочу, чтобы получить новые сообщения, которые им подобные являются более чем 70. Как я могу написать этот запрос установить с Джанго ОРМОМ?

+0

Почему бы не пойти с тем, что вы узнали, прочитав документацию? – Sayse

+0

@Sayse. Перед этой идеей я использовал целочисленное поле в моей модели Post, чтобы сохранить count count, и я использую фильтр 'Post.objects.filter (like__gt = 70) .order_by ('created_date'). All()', но он doesn ' t уникально над любит. Я создаю еще один класс, и я хочу использовать этот запрос таким образом. – Siyanew

ответ

0

Вы можете сделать QV, как этот пример.

qv = Likes.objects.filter(liker__gt = 70).all() 
out = Post.objects.filter(id__in=qv).order_by('-created_at') 
+0

спасибо за ваш ответ, но это не сработает, я думаю, что 'liker__gt = 70' неверно, потому что liker является первичным ключом модели пользователя. – Siyanew

3

Вы должны аннотировать подсчет числа подобных затем процеживают на этом

Post.objects.annotate(num_likes=Count('likes')).filter(num_likes__gt=70).order_by('-created_date')