2016-11-06 54 views
0

在我的django應用程序中,我試圖從一組對象中產生一個問題,然後在回答這個問題時,根據用戶得到的正確答案的多少創建一個得分的結果對象。我可以間接使用Django中的表單嗎?

我已經將我的一組問題對象分成適當的部分來迭代生成一個表單。我想知道的是如何計算頁面上覆選框的總數和選中的複選框的數量,並將其傳遞給django,以便我可以計算並設置視圖中結果對象的score屬性。

從我所看到的ModelForms中,他們只能直接將數據輸入到數據庫中,而不是將其提交到後端以供進一步計算。此外,ModelForm似乎是從您想要創建的模型類型生成的,而我想創建一個結果作爲從另一個模型生成的表單的結果。

下面是結果和概念模型來證明我的查詢:

class Concept(Chunk): 
    application = models.CharField(max_length=500) 
    subconcept1 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept2 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept3 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept4 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept5 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept6 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept7 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept8 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept9 = models.CharField(max_length=500, blank=True, null=True) 
    subconcept10 = models.CharField(max_length=500, blank=True, null=True) 
    conceptimage = models.FileField(blank=True, null=True) 

    @property 
    def mode(self): 
     return "concept" 

class Result(models.Model): 
    rel_chunk = models.ForeignKey(Chunk, on_delete=models.CASCADE) 
    score = models.IntegerField() 
    timestamp = models.DateTimeField(auto_now_add=True) 
    user = models.ForeignKey(Profile, on_delete=models.CASCADE) 

    class Meta: 
     get_latest_by = 'timestamp' 

在模板中,這個例子會有一個關於一個特定概念的問題。獲得答案的按鈕將隱藏問題div並將答案div放在其位置上。答案div遍歷顯示每個子概念和旁邊複選框的概念。然後用戶點擊一個按鈕來提交這個,並在提交我想獲得用戶輸入來計算結果對象的分數。

+0

如果你顯示了一些代碼,你的問題會更清楚。如果模型表單不符合您的要求,您可以使用常規表單。 – Alasdair

+0

我添加了一部分我的模型來澄清。我還沒有遇到在Django中使用常規表單。你能指點我的方向任何有用的資源?每當我搜索django和表單時,我只會得到使用模型表單的結果。 – Era

+1

我會從[Django文檔](https://docs.djangoproject.com/en/1.10/topics/forms/) – Alasdair

回答

0

在回覆上述評論時,實現您嘗試做的一種方法是在表單中包含一個隱藏的html字段,如<input type="hidden" name="result" value="0">。然後在您的視圖中,您可以通過request.POST字典對象訪問它。從文檔

看看這個:https://docs.djangoproject.com/en/1.10/ref/request-response/#django.http.HttpRequest.POST

也有看看這個問題:Django - taking values from POST request

爲了使這項工作,你就需要使用一些JavaScript代碼來更新隱藏輸入的值。

相關問題