Bağlantıların bir listesini çıkarıyorum ve bu bağlantıları popülerliğe göre sıralamaya çalışıyorum. Şimdi PostgreSQL ve Django kullanıyorumDjango'da karmaşık sipariş verme
(SUM(votes.karma_delta) - 1)/POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC
tarafından sipariş kullanarak ben MySQL bu başarılı
Y Combinator's Hacker News: Popularity = (p - 1)/(t + 2)^1.5 Votes divided by age factor. Where p : votes (points) from users. t : time since submission in hours. p is subtracted by 1 to negate submitter's vote. Age factor is (time since submission in hours plus two) to the power of 1.5.factor is (time since submission in hours plus two) to the power of 1.5.
ve bir PHP Framework: Ben Hacker News algoritması kullanıyorum. Bu kesin SQL biliyorum muhtemelen işe yaramaz ama daha sonra dönüştürme yapabilirim. İçinde bulunduğum sorun, Django'da böyle karmaşık bir order_by'nin nasıl elde edileceğini bilmiyorum.
popular_links = Link.objects.select_related().annotate(karma_total = Sum('vote__karma_delta'))
Ve gerçekten ben yoksa ham sql kullanarak o muck istemiyorum: Bence mükemmel vardır.
Sorumu özetlersek: Django'da nasıl karmaşık bir order_by oluşturabilirim?
DÜZENLEME
Orada sayfalandırma olmak ve gerçekten sadece ben çekin girişlerini sıralamak isteyecektir. Python'da bu sıralama yapmak gerçekten daha mı iyi?
F ifadeleri ile bunu yapmak için bir wy olmalı? – JudoWill
@JudiWIll Ne anlama geliyor? – TheLizardKing
Bu bana bir istisna fırlatır: 'Oluşturma sırasında bir istisna yakalandı: sütun" karma_total "mevcut değil HAT 1: SELECT ((karma_total - 1)) AS" popular "," links_link "." Id ... " – TheLizardKing