我在對基于 url 引數的主模板中的資料庫中的物件進行排序時遇到問題。我想以不同的方式對物件進行排序。主要是按日期、價格等。我在模板中有我的表單,我的 views.py 函式在其中我試圖獲取引數“sort=new”。如果我使用復選框或收音機,那么一切正常。但我需要使用選擇和選項對物件進行排序。我的模板:
<h2>Number of adverts: {{num}}</h2>
<form action="{% url 'adverts' %}">
<span>Sort by:</span>
<select name="sort">
<option value="new">newest</option>
<option value="old">older</option>
<option value="price_low">price low</option>
<option value="price_high">price high</option>
<option value="mileage_low">mileage lowest</option>
<option value="mileage_high">mileage higher</option>
<input type="submit" value="Sort">
</select>
</form>
我的views.py函式:
def adverts(request):
page = 'adverts'
if request.GET.get('sort', 'new'):
adverts = Advert.objects.all().order_by('-created')
elif request.GET.get('sort','old'):
adverts = Advert.objects.all().order_by('created')
else:
adverts = Advert.objects.all().order_by('-mileage')
a = 0
for num in adverts:
a = 1
context = {'adverts': adverts, 'num': a, 'page': page}
return render(request, 'adverts/adverts.html', context)
正如我上面提到的。我想對我在模板中列印的物件進行排序。我希望它是一個下拉串列,而不是一個復選框或收音機。也許我需要在 forms.py 檔案中創建一個表單,然后訪問我的模板中的表單欄位?我糊涂了。
uj5u.com熱心網友回復:
您應該檢查引數的值,sort因此:
def adverts(request):
page = 'adverts'
adverts = Advert.objects.all()
sort_by = request.GET.get('sort') # ?? obtain the value for sort
if sort_by == 'new':
adverts = adverts.order_by('-created')
elif sort_by == 'old':
adverts = adverts.order_by('created')
else:
adverts = adverts.order_by('-mileage')
num = len(adverts) # ?? use len to count the number of items
context = {'adverts': adverts, 'num': num, 'page': page}
return render(request, 'adverts/adverts.html', context)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411311.html
標籤:
上一篇:撤消兩個請求但未合并的提交
