2017-05-05 103 views
0

我想在重新測試表單提交時將重新測試模型中的布爾字段is_rep設置爲true。 現在它只是被添加到重新測試模型中。 因爲我想在提交請求時觸發其他事件。在django中提交時設置布爾值

我的代碼

models.py

class Retest(models.Model): 

semester = models.ForeignKey(Semester) 
dept = models.ForeignKey(Departement) 
batch = models.ForeignKey(Batch) 
date = models.DateField(default=0) 
subject = models.ForeignKey(Subject) 
name = models.CharField(max_length=50) 
admnno = models.CharField(max_length=50) 
reason = models.CharField(max_length=50) 
proof = models.CharField(max_length=200) 
is_hod = models.BooleanField(default=False) 
is_principal = models.BooleanField(default=False) 
notify = models.BooleanField(default=False) 
is_sure = models.BooleanField(default=False) 
is_rep = models.BooleanField(default=False) 

def get_absolute_url(self): 
    return reverse('retest:retestform') 
def __str__(self): 
      return self.name 

urls.py

url(r'^retest/retestform/$',login_required(views.RetestCreate.as_view()), name='retestform') 

views.py

class RetestCreate(CreateView): 
model = Retest 
fields = ['semester', 'dept', 'batch', 'date', 'subject', 'name', 'admnno', 'reason', 'proof', 'is_sure'] 

模板

<form class="form_horizontal" action="" method="post" enctype="multipart/form-data" > 
     {% csrf_token %} 
     {% include 'retest/form-template.html' %} 
     <div class="form-group"> 
      <div class="col-sm-offset-2 col-sm-10"> 
      <button type="submit" class="btn btn-success">Submit</button> 

      </div> 
     </div> 
     </form> 
+0

不知道你有什麼問題是確切的。我猜你想看看form_valid()。 https://docs.djangoproject.com/en/1.11/topics/class-based-views/generic-editing/ – Bott0610

+0

如果這個請求被提交,它將被存儲在數據庫中。然後它可以被其他類型的用戶主頁通過過濾。所以爲了通知用戶新的請求,我需要在提交時設置一個字段爲真@ Bott0610 – najmath

+0

您能向我們展示您的表單嗎? – Algorithmatic

回答

0

form_template

{% for field in form %} 

    <div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-10"> 
    <span class="text-danger small">{{ field.errors }} </span> 
    </div> 
    <label class="control-label col-sm-2">{{ field.label_tag }} </label> 
    <div class ="col-sm-12"> 
    <div class="form-control"> 
    {{ field }}</div></div> 
    </div> 


{% endfor %} 
0

如果你想布爾字段設置爲true,當提交表單時,你就必須處理它在視圖中。

提交表單並將其保存到數據庫中之前,只需設置is_rep = true即可。 is_rep是模型中的一個字段,但未在表單中使用。 所以,如果你想改變它,那麼你必須手動爲它寫一個視圖。嘗試使用基本視圖而不是通用視圖來理解視圖和表單的工作流程。

我建議使用這樣的事情:

class RetestView(View): 

    def get(self, request, *args, **kwargs): 
     .............. 
     return render(request, self.template, {"some_context"} 

    def post(self, request, *args, **kwargs): 
     form_data = your_form(request.POST) 
     if form_data.is_valid(): 
      new_object = form_data.save(commit=False) 
      new_object.is_rep = True 
      new_object.save() 
     return render(request, self.template, {"some...context"}) 

希望你得到了什麼你要找的..!

+0

你可以編輯你的文章來更新細節,不需要爲你自己的問題發表一個答案。 – zaidfazil