내가 범주 또는 날짜별로 선택적으로 필터링하고 싶은 나는 항목이 블로그가 가정 :필터링 양식 디자인
#views.py
blog_entries = Blog.objects.all()
cat_filter = TurnoverFilterForm(request.GET)
if cat_filter.is_valid():
categories_chosen = cat_filter.cleaned_data['categories']
start_date = cat_filter.cleaned_data['start_date']
end_date = cat_filter.cleaned_data['end_date']
blog_entries = blog_entries.cat_filter(categories_chosen).date_filter(start_date,end_date)
return render(request,'index.html',{'blog_entries':blog_entries}
: 나는 다음과 같은 형식을 사용하는 필터의 경우
#forms.py
class MyForm(forms.Form):
categories = forms.ModelMultipleChoiceField(Category.objects.all(),
required=False)
start_date = forms.DateField(required=False)
end_date = forms.DateField(required=False)
내가 가지고 다음 뷰를했습니다
여기에서 date_filter
및 cat_filter
은 (작동하는) 사용자 정의 관리자 기능입니다.
질문은 다음과 같습니다
는- 는 정말 옵션 형태로 각 필드를해야합니까? 이 경우에 대한 선택적 형식이 있습니까? (코드 중복성이 많기 때문에)
- 양식이 항상 유효하거나 양식이 항상 유효하고 날짜 범위가 선택 사항이고 양식의 요청 유형이 ' ? 문제가 이런 종류의 다른 어떤 우아한 해결책이 있습니까 '
- 를 얻을 당신이 선택 될 폼의 모든 필드를 원하는 경우에 당신이의
__init__
기능을 무시할 수 있습니다
양식이 항상 유효한 것은 아닙니다. 내가 지정한 카테고리가 아닌 카테고리 또는 날짜 형식이 아닌 날짜로 요청을 보내면 어떻게됩니까? – Xymostech
둘 다'date_filter'와'cat_filter'에 잡힌다. – ProfHase85
나는 포인트 번호 2를 모른다. 나는 못생긴'if'를 보지 못했다. 'views.py'에있는 것입니까? –