0

したがって、私は一般的なリストビューに基づいて本当に簡単なフィルタを作っています。私は "GET"を使用して、searchfield/filterfieldからユーザー入力を取得します。Djangoは汎用リストビューフィルタでユーザ入力を検証します

models.DeliveryのDateFieldである "arrival_date"でデータをフィルタリングしたいとします。したがって、このフィルタは動作しますが、指定された数値は "arrival_date"の内容と比較されます

私がしたいことは、ユーザ入力を検証することです。数字と文字 " - "または "/"のみを含むことができます。文字以外にも、質問には有効な入力には少なくとも4桁の数字が必要だと言いたい。私は、任意の検証を使用するには、「clean_arrival_date」を使用したいが、私はこのリストビューで必要な検証と同じ種類を適用する正しい方向にプッシュを必要とする通常のフォームで

...助けを

感謝、

ケビン

以下;

をちょうどチェック:あなたはURLを経由して、それを渡す場合は、JSでのAjaxを使用している場合query_set

#views.py  

    """ 
    Date selector based on ListView 
    """ 

    from django.views.generic import ListView 

    from .models import Delivery 

    class DeliveryDateListView(ListView): 
     model = Delivery 
     template_name = 'data/deliveries_by_date.html 

     def get_queryset(self): 
      # Fetch the queryset from the parent get_queryset 
      queryset = super(DeliveryDateListView, self).get_queryset() 

      # Get the data GET parameter 
      date = self.request.GET.get("date") 
      if date: 
       # Return a filtered queryset 
       return queryset.filter(arrival_date__icontains=date) 
      # Return the base queryset 
      return queryset 

答えて

0

まず最優先のリストビューを含むviews.pyは、このdjango's url

を読んでください。入力(あなたがダウンイベントキーをチェックしたり、送信したときに確認することができます)

私たちは、まあ、この

+0

を行うには、多くの方法を持って、私は有効の「ジャンゴ・ウェイ」を使用したいのですがフィールドにはjQueryでdatepickerが保持されますが、フィールドに入力してdatepickerを無視するユーザーが存在します。 –

+0

したがって、送信する前にチェックする必要があります。 ユーザーがフィールドを無効にできるように選択していないので、多くのソリューションがあります。 –

+0

もちろん、フィールドを無効にすることもできますが、datepicker、js、no ajaxを使用していないとします。 date ... Djangoバリデーションのビルドを使って、どのように検証しますか? –

関連する問題