【问题标题】:How to sort a django query with a specific value?如何对具有特定值的 django 查询进行排序?
【发布时间】:2013-07-03 05:16:20
【问题描述】:

我在 Django 中有一个这样的模型:

 class Session(models.Model):
        user = models.ForeignKey(User)
        session_name = models.CharField(max_length=254)
        server_full_path = models.CharField(max_length=254)      # Contains server
        server_name = models.CharField(max_length=254)           #Server Name or IP
        file_path = models.CharField(max_length=254)             #full file path
        source_username = models.CharField(max_length=100)
        source_password = models.CharField(max_length=100)
        make_default = models.BooleanField()

我正在使用此查询来获取所有 server_id:

all_server_id = Session.objects.filter(user_id=request.user.id)

我希望对查询进行排序,使 make_default=1 的值首先出现。我希望它显示在模板中。我该怎么做?

【问题讨论】:

  • 我不确定你想要什么。似乎您想按make_default 订购,但同时您想在模板上显示所有这些,您希望for 循环以保留此顺序的方式循环,我正确吗?
  • 是的。但是当我做 for 循环时,我想首先显示 make_default = 1 的数据。
  • 那么第一个答案将为您完成。试试看。
  • 怎么会不行呢?尝试使用这个all_server_id = Session.objects.filter(user_id=request.user.id).order_by('-make_default')。 make_default 不是布尔字段吗?
  • 是的,它是一个布尔字段,在输入“-”之后,它就起作用了。谢谢老哥!

标签: django django-templates django-queryset


【解决方案1】:

如果要对查询进行排序,则应使用 order_by() 函数,例如:

all_server_id = Session.objects.filter(user_id=request.user.id).order_by('make_default')

【讨论】:

    【解决方案2】:

    你所要做的就是:

    all_server_id = Session.objects.filter(user_id=request.user.id).order_by('-make_default')
    

    我相信这回答了 cmets 的问题。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 2023-03-28
      • 2015-10-06
      相关资源
      最近更新 更多