2016-11-02 1 views
0

私はちょうどDjangoフィルターで作業を始めました。私がテストすると、filter.formにはすべてのフィールドのフィルタが表示され、目的のフィルタのみを表示することはできません。ここですべてのフィルタを表示するDjango-Filterフォーム?

はフィルタです:

class EmployeeFilter(django_filters.FilterSet): 
    hire_date = django_filters.DateFilter(name='hireDate', lookup_expr='hireDate__year') 
    hire_date__gte = django_filters.DateFilter(name='hireDate', lookup_expr='hireDate__gte') 
    hire_date__lte = django_filters.DateFilter(name='hireDate', lookup_expr='hireDate__lte') 

    class Meta: 
     model = models.Employee 
     fields=['hireDate'] 

は、ここでビューの:

def test_filters(request, template_name='filter-test.html'): 
    from . import filters 

    f = filters.EmployeeFilter(request.GET, queryset=models.Employee.objects.all()) 

    return render_to_response(template_name, locals(), context_instance=RequestContext(request)) 

は、誰もが今までにこのに遭遇していますか?どうした?

答えて

0

フィルタセットのフォームはDjangoのフォームの二つの役割の両方を果たし:

  • それは入力値を検証
  • テンプレートでフォームを表示することができます。

これらの第二は、(間違いなく)より重要である - 確かにDjangoのフィルターのために:あなたは、彼らががに対するフィルタされませんフォームからフィールドを削除する場合。

おそらく、フィルタセットで定義するフィールドは少ないです。

(別のオプションは、必要なフィールドだけで別のDjangoフォームを定義し、それをテンプレートに使用することですが、実際の検証を行うためにフィルタセットのフォームを残してください)。

私は役立つことを望みます。

+0

あなたの言っていることは分かりません。私は明確に1つしか定義していないときに、すべてのフィルタ/フィールドが表示されている理由を尋ねています。 – Craig

+0

3つの宣言されたフィールドが表示されます。 –

+0

いいえ、宣言されただけでなく、あらゆる分野です。明示的に宣言したフィールドではなく、20個のフィールドが表示されます。 – Craig

関連する問題