2016-07-28 10 views
0

モデルに空白= Trueフィールドがあります。私のフォームでは、モデルで空白= Trueの場合はオプションのフィールドがあります。したがって、私のフォームで空にしたい場合は、私のモデルオブジェクトをフィルターに掛けるために空のフィールドを使って検索したくありません。この場合、他のクエリを作成する必要はありますか?フォームフィールドがNoneの場合該当するフィールドにモデルがありません

models.py

class searchGoods(forms.Form): 
    region_from = forms.ModelChoiceField(required=False, queryset = Region.objects.all(), widget = forms.Select()) 
    region_to = forms.ModelChoiceField(required=False, queryset = Region.objects.all(), widget = forms.Select()) 

forms.py

class Add_good(models.Model): 
    loading_region = models.ForeignKey(Region, blank=True, related_name="loading_region", null=True) 

    unloading_region = models.ForeignKey(Region, blank=True, related_name="unloading_region", null=True) 

views.py

if form['region_from'] == None: 
      if form['region_to'] == None: 
       data_from_db = Add_good.objects.filter(loading_country=form['country_from'], 
               unloading_country=form['country_to'], 

               loading_city=form['city_from'], 
               unloading_city=form['city_to'], 

               loading_goods_date_from__gte=form['date_from'], 
               loading_goods_date_to__lte=form['date_to'], 

               mass__gte=form["mass_from"], 
               mass__lte=form["mass_to"], 

               volume__gte=form['volume_from'], 
               volume__lte=form['volume_to'], 

               auto_current_type__in=auto_types, 
               ) 
      else: 
       data_from_db = Add_good.objects.filter(loading_country=form['country_from'], 
                 unloading_country=form['country_to'], 

                 loading_city=form['city_from'], 
                 unloading_city=form['city_to'], 

                 unloading_region=form["region_to"], 

                 loading_goods_date_from__gte=form['date_from'], 
                 loading_goods_date_to__lte=form['date_to'], 

                 mass__gte=form["mass_from"], 
                 mass__lte=form["mass_to"], 

                 volume__gte=form['volume_from'], 
                 volume__lte=form['volume_to'], 

                 auto_current_type__in=auto_types, 
                 ) 

     else: 
      if form['region_to'] == None: 
       data_from_db = Add_good.objects.filter(loading_country=form['country_from'], 
                unloading_country=form['country_to'], 

                loading_city=form['city_from'], 
                unloading_city=form['city_to'], 

                loading_region=form["region_from"], 

                loading_goods_date_from__gte=form['date_from'], 
                loading_goods_date_to__lte=form['date_to'], 

                mass__gte=form["mass_from"], 
                mass__lte=form["mass_to"], 

                volume__gte=form['volume_from'], 
                volume__lte=form['volume_to'], 

                auto_current_type__in=auto_types, 
                ) 
      else: 
       data_from_db = Add_good.objects.filter(loading_country=form['country_from'], 
                 unloading_country=form['country_to'], 

                 loading_city=form['city_from'], 
                 unloading_city=form['city_to'], 

                 loading_region=form["region_from"], 
                 unloading_region=form["region_to"], 

                 loading_goods_date_from__gte=form['date_from'], 
                 loading_goods_date_to__lte=form['date_to'], 

                 mass__gte=form["mass_from"], 
                 mass__lte=form["mass_to"], 

                 volume__gte=form['volume_from'], 
                 volume__lte=form['volume_to'], 

                 auto_current_type__in=auto_types, 
                 ) 

まあ、正確に、私のモデルに複数のフィールドは、それらのすべては、そこにあります私がそれらを救うときに見ることができます

+0

フィルタリングしている場所でコードを共有できますか?あなたの質問を正しく理解しているなら、if文を使ってフィルタリングする前にフォームの値がnoneかどうかを調べるのはなぜですか? –

+0

@ JensAstrup "if"を使うと、1つのフィールドで4つの異なるクエリを実行する必要があり、別の方法があるかも知りません。 –

+0

フォームが処理されているビューを追加できますか? –

答えて

0

状況は私がmakemigrationsを忘れることです。その後、すべて正常に動作します!

関連する問題