我對Django和python完全陌生。 我想在我的Listview頁面上添加一個搜索欄,就像我在Django管理網站上看到的那樣。
我在網上看到了很多django檔案、很多解釋和很多教程,但我不得不說,我很困惑,找不到解決問題的辦法。 我想做什么? 我有一個頁面,上面有一個(基于類的)ListView,顯示我的表格中的5個欄位。 我想在這5個欄位中的2個欄位(物件ID和描述)上添加一個搜索欄,就像我在Django管理網站上看到的那樣。
查看檔案和網路,有很多不同的建議可以做到這一點(queryset、過濾器、背景關系、Q...)。就我個人而言,我希望能與背景關系一起作業。我試著從我的搜索欄中恢復資訊,但我已經實作并嘗試過的東西現在還不能用。 誰能在這個問題上幫助我?最好的做法和方法是什么?用一些代碼示例來說明如何管理這個問題? 謝謝!
#HTML
<form method="GET"/span>>
< input type="text"/span> name="q" value=" id="搜索條" autofocus>
< input class="button" type="submit" value="Search">
</form>
#View class AircraftListView(ListView):
model = Aircraft
paginate_by = 10
def get_context_data(self, **kwargs)。
context = super(AircraftListView, self).get_context_data(**kwargs)
print(context)
filter_set = Aircraft.objects.all()
if self.request.GET.get('searchbar') 。
q = self.request.GET.get('searchbar')
print('Hello I am on the right way')
filter_set = filter_set.filter(q=self.airplane.air_tailnumber)
else:
print('I took the wrong way')
return context
uj5u.com熱心網友回復:
既然你不想使用django過濾器,我將嘗試為你的視圖提供一個例子。與其覆寫get_context_data(實際上是為了獲得額外的背景關系),不如在你的ListView中覆寫get_queryset方法,例如:
def get_queryset(self)。
queryset = super() .get_queryset()
search_text = request.GET.get("searchbar"/span>)
if search_text:
return queryset.filter(your_model_field=search_text)
return queryset.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315719.html
標籤:
