2016-05-30 63 views
1

我想找到我的網站設計以下搜索網頁的最佳方式:我有預先計算的測量神經元的數量龐大的數據庫設計定製的搜索頁面

。每個測量對象爲每個神經元保存20個以上的場。 搜索頁面應該提供一個範圍內的兩個值[最小 - 最大]的每個fieldin的measurment對象

例如(一個簡化的模型):

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對於每個領域)

情況是,我的測量有很多領域,也還沒有完成,即他們仍在測試中,其中一些可能排除在外,其他可能會被添加,所以我不想要每次嘗試測量中的不同字段時更改搜索頁面。

所以,我認爲應根據測量模型中的字段自動生成搜索頁面中的輸入,併爲每個字段生成兩個輸入。 我爲Measurement模型做了一個表單,但是這會給每個字段一個輸入,所以我有在搜索頁面中爲min_values創建兩個表單的想法,而他爲max_values創建了兩個表單,但是我無法獲得每個通過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
  • 將它們作爲兩個不同的上下文變量傳遞。 context["form1"] = MeasurementModelForm()context["form2"] = MeasurementModelForm()
  • 相同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

希望這有助於。