2017-01-27 7 views
0

私は、このモデルました:ソート特定の状況でのクエリセットジャンゴ

class Question(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=50, verbose_name='Titolo') 
    text = models.TextField(verbose_name='Testo') 
    category = TreeForeignKey(CoursesCategory, verbose_name='Categoria') 
    created_at = models.DateTimeField(auto_now_add=True) 

をし、私は別のアプリで別のモデルました:で、私が注文しなければならない、今

class Like(models.Model): 
    user = models.ForeignKey(User) 
    value = models.IntegerField(verbose_name='Voto') 
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) 
    object_pk = models.PositiveIntegerField() 
    content_object = GenericForeignKey('content_type', 'object_pk') 

を質問ビュー、質問querysetは、モデルの相対的な価値を好きです。

私はこの方法

def get_queryset(self): 
    questions = Question.objects.all() 
    questions = questions.annotate(ranking_vote=Coalesce(Sum(...), 0)).order_by('-ranking_vote') 

を使用しようとしているが、私はどのような解決策を把握することはできません。

あなたは私を助けることができる。これは、使用することができた後

+0

:あなたが行うことができますあなたの要求について

q.like_set.count() # return like number link to this question object 

かget_queryset()またはソートクエリセットを作成する方法と、あなたの問題かどうかを使用する方法と、あなたの問題。問題の定義と質問をより正確に行うことができますか? – Fian

+0

あなたの質問モデルと同じようにアクセスすることはできません。あなたはあなたのモデル間のリンクを作成する必要があります。 – Wilfried

答えて

0
class Like(models.Model): 
    user = models.ForeignKey(User) 
    question = models.ForeignKey(Question) # New field 
    value = models.IntegerField(verbose_name='Voto') 
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) 
    object_pk = models.PositiveIntegerField() 
    content_object = GenericForeignKey('content_type', 'object_pk') 

like_set Questionオブジェクト上を。私はあなたの問題を理解していない

from django.db.models import Count 
questions = Question.objects.annotate(num_like=Count('like')).order_by('-num_like') 
関連する問題