django从用户请求更改order_by

时间:2015-04-12 20:59:50

标签: javascript jquery django django-models django-views

我们正在网络浏览器上加载模型" Post"的内容,这是由"氦" (我们的流行变量)。

现在,我们想通过" pop_date"来订购相同的内容。 (当我们使用due_date变量时),当用户点击按钮时。

是否可以在不重新加载浏览器页面的情况下立即执行此操作?

我们到目前为止看到的选项:

  • 更改" order_by"并请求一个新列表(对数据库的新操作,再次重新上载所有媒体)
  • 使用python"排序"功能(加载许多帖子的内存问题)

models.py

class Post(models.Model):
    pub_date = models.DateTimeField('date published',auto_now=True)
    pop_date = models.DateTimeField('Popping time', blank=False)        
    helium=models.IntegerField(default=0)
    (...)

views.py(查询)

Post.objects.filter(pop_date__gte=timezone.now()).order_by(self.ordering,'-id')

url.py

# Order by Helium       
url(r'^(?P<slug>[-\w]+)/popular$', views.IndexView.as_view(ordering='-helium'), name='index'),    

# Order by Popping time
url(r'^(?P<slug>[-\w]+)/timeline$', views.IndexView.as_view(ordering='pop_date'), name='index_now'),    

1 个答案:

答案 0 :(得分:0)

我肯定会选择order_by。在用户点击按钮后你无法使用sorted,你必须再次制作另一个request (你最终可以使用JS但这是一个全新的故事 - 你将不得不提取您需要的所有数据,这将限制您将来不能使用分页)