2016-05-30 12 views
1

私のウェブサイトで次の検索ページを設計する最良の方法を見つけることを試みています:カスタマイズされた検索ページの設計

私は膨大な数のニューロンの計算済みの測定値のデータベースを持っています。 各測定オブジェクトは、各ニューロンごとに20個以上のフィールドを保持します。 検索ページは、それぞれについて[最小 - 最大2つの値の範囲を提供しなければならない。例えばmeasurmentオブジェクト

(簡易モデル)をfieldin:

class Measurment(models.Model): 

    width = models.FloatField('Width', null=True, blank=True) 
    height = models.FloatField('Height', null=True, blank=True) 
    depth = models.FloatField('Depth', null=True, blank=True) 

検索ページは、6つのテキストボックス(2を有していなければなりません

私の測定には多くのフィールドがあり、まだ完了していない、つまりまだテスト中で、一部が除外されている可能性があります。毎回異なるフィールドを試してみると検索ページが変わる。

私は、検索ページの入力を測定モデルのフィールドに応じて自動的に生成し、各フィールドに2つの入力を生成する必要があるという考えです。 私はMeasurement Modelのフォームを作ったが、これはフィールドごとに1つの入力を与えるので、検索ページにmin_valuesとmax_valuesの2つのフォームを作成するというアイデアがありましたが、 POSTデータ

コード経由:

if request.method == POST: 
     if 'btn_search' in request.POST: 

      form_min = MeasureSearchForm(request.POST) 
      min_values = form_min.save(commit=False) 

      form_max = MeasureSearchForm(request.POST) 
      max_values = form_max.save(commit=False) 

私は、それぞれの時間を取得するためにどの形式を指定することはできません。

この検索機能を実現するための正しい設計方法は何ですか?

ありがとうございます。

答えて

0
  • Measurementモデルに基づいてModelFormを作成してください。 (MeasurementModelForm
  • 2つの異なるコンテキスト変数として渡します。 context["form1"] = MeasurementModelForm()context["form2"] = MeasurementModelForm()
  • テンプレートの両方のフォームをSAME formタグ内でレンダリングします。あなたのビュー内

    <form method="post" ....> 
    
        {{ form1 }} 
        {{ form2 }} 
    
    </form 
    
  • :このことができます

    if request.method == POST: 
        form1_data = {key:query[key][0] for key in request.POST} 
        form2_data = {key:query[key][1] for key in request.POST} 
        form_min = MeasureSearchForm(form1_data) 
        form_max = MeasureSearchForm(form2_data) 
    
        # ... 
    

OR

使用modelformsetfactory

希望。

関連する問題