我正在尋找一種簡單的方法來爲我的對象實現一個過濾器。一個基本的。我能找到的只有Django + Haystack + Solr或Elasticsearch。我沒有使用Java應用程序的經驗。另外...我想保持簡單。Django 1.10超級簡單過濾器
我能得到的最接近的是django_filter,但是它的文檔是......不適合像我這樣的noob。另外我不能和普通的Django一樣嗎?我能夠簡單的搜索工作,沒有solr :)而且我能夠讓過濾器在管理工作,所以所有的工具都在那裏。
如果有人可以指導我一步一步如何設置過濾器和狀態從我的模型。 型號
class Contact(models.Model):
name = models.CharField(max_length=2000
phone = models.CharField(max_length=10)
url = models.URLField(max_length=200, default="https://")
email = models.EmailField(max_length=25, verbose_name="Email", default="[email protected]")
STATUS = (
('A','Active'),
('U','Unactive')
)
status = models.CharField(max_length=1, choices=TYPE, default="A")
def _unicode_(self):
return self.name
def _str_(self):
return self.name
我使用搜索訪問量:
def index(request):
#full list
queryset_list = Contact.objects.all()
#search
query = request.GET.get("q")
if query:
queryset_list = queryset_list.filter(
Q(name__icontains=query)|
Q(phone__icontains=query)|
Q(url__icontains=query)|
Q(email__icontains=query)|
#pagination
paginator = Paginator(queryset_list, 10)
page_request_var = "page"
page = request.GET.get(page_request_var)
try:
queryset = paginator.page(page)
except PageNotAnInteger:
queryset = paginator.page(1)
except EmptyPage:
queryset = paginator.page(paginator.num_pages)
context = {
"object_list": queryset,
"name" : "List",
"page_request_var": page_request_var,
}
return render(request, "index.html", context)
所以,你已經filte通過GET參數來響您的查詢。你想過濾什麼? –
我想爲STATUS添加過濾器選項。所以潛在用戶可以獲得所有活動,無效或所有聯繫人。聽起來很簡單...我只需要一個正確的方向,因爲我可以谷歌包括這個複雜的Java解決方案。 –
兩種方式。您可以手動執行此操作,並使用名稱「status」在HTML中創建另一個表單域。在表單提交中,您將在request.GET中提交它。用另一個使用它的Q對象過濾查詢並將其傳遞迴上下文以設置表單字段值。第二種方法實際上是使用Django過濾器,它根本不難。我可以告訴你。 –