在Django Temp中创建排序选项

2024-09-28 03:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django新手,需要一些帮助。我的数据库条目显示在模板上(6个条目)。我知道要对数据库对象进行排序,您需要在视图.py. 我想让这个功能在同一个模板链接。到目前为止,我唯一能想到的就是创建一个新的视图、新的url模式和新的模板来显示这个新的排序。我不想仅仅为了排序而写30页。我认为我需要将上面的代码行分配给一个变量(请参见下面的product dproduct_a)。然后我会在模板中调用该变量,但我不确定如何替换现有的数据库项列表。简而言之:如何创建可单击的链接,以便在同一模板中对数据库对象进行排序。这已经在管理员中完成了。谢谢您!在

我的视图.py公司名称:

from django.http import Http404, HttpRequest
from django.contrib import messages
from vendor_db.models import Itemo
from django.db.models import Q
from django.shortcuts import HttpResponse, HttpResponseRedirect,
render_to_response, render, redirect, get_object_or_404

def index(request):
    return render(request, 'vendor_db/index.html')

def vendors(request):
    items = Itemo.objects.all()
    var_2 = request.GET.get("q")
    product_d = Itemo.objects.all().order_by('-Product_Name')
    product_a = Itemo.objects.all().order_by('Product_Name')
    if var_2:
        items = items.filter(Vendor_Name__icontains=var_2)

    context = {'items': items,
    'product_d' :product_d,
    'product_a' :product_a,
    }

    return render(request, 'vendor_db/vendors.html', context)

我的模板(它已经以任意顺序显示我的所有数据库对象):

^{pr2}$

编辑 虽然我确信下面的两个答案可以解决问题,但我无法理解(我自己的错误)。我将数据库条目放在一个表中,并使用javascript library来更改排序顺序,只需单击列标题。你可以看到我问的问题和代码here


Tags: 对象djangofromimport视图模板数据库db
2条回答

您可以像您所说的那样使用带有变量的表单,将表单传递回同一视图并从中获取sort选项,然后动态地或使用if语句为产品项创建排序查询。然后重新刷新页面。这意味着只需要一个视图。在

或者你可能对一个名为django-tables2的应用程序感兴趣,它使你能够呈现一个很好的表,然后可以通过点击箭头进行排序。在

在你的模型.py班级使用

Class XYZ()
   ...................
   ...................

   class Meta:
       ordering = [
                "your_first_field_name",
                "your_second_field_name",
                ........................
            ]

相关问题 更多 >

    热门问题