2016-11-30 26 views
0

我有一個模型,有回覆,模板中回覆最高的應該是第一個。order_by在sqlite中正常工作,但不在postgres中

在我的本地機器上它正確地到達服務器回覆但是基於upvote字段的FK過濾。

型號:

class solution(models.Model): 
    doubt=models.ForeignKey(doubts,related_name='answers') 
    reply=models.TextField() 
    snapshot = models.FileField(upload_to='support',null=True,blank=True) 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 
    user=models.ForeignKey(settings.AUTH_USER_MODEL,null=True,blank=True) 
    upvote = models.ManyToManyField(User,related_name='upvoteuser') 

    @property 
    def total_upvotes(self): 
     return self.upvote.count() 

    def __str__(self): 
     return str(self.doubt) 

視圖

def ticketdetails(request,slug,pk): 
    ticketis=doubts.objects.get(pk=pk) 
    replies = ticketis.answers.all().order_by('-upvote') 


    if request.method== 'POST': 
     form=replyform(request.POST) 
     if form.is_valid(): 
      new_form=form.save(commit=False) 
      new_form.user=request.user 
      new_form.doubt=ticketis 
      new_form.save() 
      form=replyform() 
      return HttpResponseRedirect(reverse('ticketdetail',kwargs={'slug':ticketis.slug,'pk':ticketis.id}),messages.add_message(request, messages.SUCCESS,'Response submitted succesfully.')) 
    else: 
     form=replyform()  
    return render(request,'ticketview.html',{'ticketis':ticketis,'replies':replies,'form':form}) 
+0

upvote模型的什麼部分,你試圖命令?它是否有任何指定的順序? – Sayse

+0

Upvote字段應該是第一個數字。 –

回答

2

與最upvotes給予好評場數應該是第一個。

這不是你的排序是幹什麼的,在所有

docs

如果試圖通過一個字段是另一種模式的關係,Django會訂購如果沒有指定Meta.ordering,則使用相關模型的默認排序,或者按相關模型的主鍵排序。

如果你想用的東西計數命令,那麼你就需要先對其進行批註,然後以便基於該

你的觀點是在談論一個不同的模式,一個你」已經顯示,但解決方案仍然看起來類似於下面

Solution.objects.annotate(upvote_count=Count('upvote')).order_by('upvote_count') 
+0

本地機器如何與我的代碼一起工作! –

+0

@PulkitSharma - 純粹的運氣。 – Sayse

+1

本地機器與您的代碼一起工作,因爲它是純粹的運氣,或者因爲您使用的是較小的RDBMS。 Postgresql更接近標準合規性和sqlite – e4c5

相關問題