【发布时间】:2016-07-03 05:19:42
【问题描述】:
我是 Django 新手,需要一些帮助。我的数据库条目显示在模板上(6 个条目)。我知道要对数据库对象进行排序,您需要在views.py 中写入Model_Name.objects.all().order_by('Choose_Sort_Option')。我想让这个函数成为同一个模板中的链接。到目前为止,我唯一能想到的就是创建一个新视图、新 url 模式和新模板来显示一种新类型。我不想仅仅为了排序而制作 30 页。我在想我需要将上面的那行代码分配给一个变量(参见下面的product d 和product_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)
我的模板(它已经以任意顺序显示了我的所有数据库对象):
{% extends "base.html" %}
{% block content %}
{% load static %}
<h2>All Vendors</h2>
<h3>Search</h3><div>
<form method='GET' action=''>
<input type='text' name="q" placeholder='Search Vendors'/>
<input type='submit' value='Search'/>
<form action="{% url 'vendors' %}">
<input type="submit" value="Reset">
</form>
</form>
<br>
{% if items %}
{% for stuff in items %}
<a href="{% url 'vendors_detail' stuff.id %}">
{{ stuff.Product_Name|capfirst }}<div></div>
</a>
{% endfor %}
{% else %}
<p>No Results Found</p>
{% endif %}
<h3>Sort by:</h3>
<a href="{% url 'product_name_asc' %}">Product Name</a>
{% endblock %}
编辑 虽然我确信下面的 2 个答案可以解决问题,但我无法理解(我自己的错)。我将我的数据库条目放在一个表中,并使用javascript library 来更改排序顺序,只需单击列标题即可。你可以看到我问的问题和代码here
【问题讨论】:
标签: python django django-templates django-admin django-views