Django post方法仅返回复选框

时间:2017-11-19 07:34:36

标签: python html django checkbox

我试图在SO上查找此特定查询,但找不到。

我是Django的新手,使用的是版本1.10和python 3.4。 对于我在模板中使用它们的复选框。

出于某种原因,我在使用forms.py文件中的复选框小部件时犹豫不决,我认为这会打扰我现有的用户界面(如果我错了请纠正我)。 当我提交表单时,模板会返回我勾选的复选框数的空白引号。

这是我的模特:

class UsrGrpMaster(models.Model):
    SrNo =models.IntegerField(unique=True)
    UsrGrpID = models.AutoField(primary_key=True)
    GrpName = models.CharField(max_length=50)
    Purch = models.BooleanField(default=False)
    PurchMod = models.BooleanField(default=False)
    Sales = models.BooleanField(default=False)
    SalesMod = models.BooleanField(default=False)
    Stock = models.BooleanField(default=False)
    StockMod = models.BooleanField(default=False)
    JV = models.BooleanField(default=False)
    JVMod = models.BooleanField(default=False)
    DelPurch = models.BooleanField(default=False)
    DelSales = models.BooleanField(default=False)
    DelJV = models.BooleanField(default=False)

    class Meta:
        db_table = "UsrGrpMaster"

这是我的模板:

<div class="body-set">      
<div id="form">

    <form class="form-horizontal" method="POST" action="{% url 'creategroup' %}">
      <div class="form-group" align="center">
        <label class=""><font size="6">Create a New User Group</font></label>{% if errormsg %}<br />
        <font size="3" color="#FF0000">{{ errormsg }}</font>{% endif %}
      </div>

      <div class="form-group">
        <label class="control-label col-sm-4" for="text">Name of the User Group:</label>
        <div class="col-sm-5">
          <input type="text" class="form-control" id="grpname" placeholder="Type in the new User Group Name" name="grpname">
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-4" for="text">Permissions:</label>
        <div class="col-sm-5">
          <div><strong>Purchase Voucher</strong></div>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="1">View</label>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="2">Edit</label>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="3">Delete</label>
        </div><br /><br /><br />
        <label class="control-label col-sm-4" for="text"></label>
        <div class="col-sm-5">
          <div><strong>Sales Voucher</strong></div>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="4">View</label>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="5">Edit</label>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="6">Delete</label>
        </div><br /><br /><br />
        <label class="control-label col-sm-4" for="text"></label>
        <div class="col-sm-5">
          <div><strong>Stock</strong></div>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="7">View</label>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="8">Edit</label>
        </div><br /><br /><br />
        <label class="control-label col-sm-4" for="text"></label>
        <div class="col-sm-5">
          <div><strong>Journal Voucher / Income-Expense Voucher / Ledgers</strong></div>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="9">View</label>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="10">Edit</label>
          <label class="checkbox-inline"><input type="checkbox" name="checks[]" value="11">Delete</label>
        </div>
      </div>

      <div class="form-group">
        <div class="col-sm-offset-4 col-sm-5">
          <button type="submit" class="btn btn-primary">Create User Group</button>
        </div>
      </div>
    </form>
</div>

以下是基于类的视图:

class CreateGroup(View):
@never_cache
def get(self, request, *args, **kwargs):
    if 'adminusr' in request.COOKIES:
        if request.session.get('errormsg', None):
            errormsg = request.session['errormsg']
            del request.session['errormsg']
        else:
            errormsg = ''
        return render(request, 'adminpage/creategroup.html', {"errormsg": errormsg})
    else:
        return HttpResponseRedirect("/adminpage/")


def post(self, request, *args, **kwargs):
    if request.method == 'POST':
        GrpName = request.POST.get('grpname')
        chq = request.POST.getlist('checks[]')

        print(chq)
        value = sninc(UsrGrpMaster, 'SrNo') #increments the sn and stores in DB

        if checkduplicates(UsrGrpMaster, 'GrpName', GrpName) is not True:
            qs = UsrGrpMaster(SrNo=value, GrpName=GrpName,
                                 Purch=chq[1],
                                 PurchMod=chq[2],
                                 Sales=chq[4],
                                 SalesMod=chq[5],
                                 Stock=chq[7],
                                 StockMod=chq[8],
                                 JV=chq[9],
                                 JVMod=chq[10],
                                 DelPurch=chq[3],
                                 DelSales=chq[6],
                                 DelJV=chq[11]
                                )
            qs.save()
        else:
            request.session['errormsg'] = "The user group already exists"
            return HttpResponseRedirect("/adminpage/adminhome/creategroup/")

        return HttpResponseRedirect("/adminpage/adminhome/")

这是浏览器和控制台剪辑。选中9个框并提交显示9个空引号。 template_browser_clipping
console_clipping

我希望表单为我提供复选框的value属性,以便将它们存储在数据库中。请指导我如何实现这一点(使用或不使用forms.py)。

这是Javascript:

$(document).ready(function(){
   $('form').submit(function() {
    if ($.trim($('input[name="grpname"]').val()) === "") {
      $('input[name="grpname"]').css({'background-color' : '#ffe5e5'});
      return false;
    }
  });


   $('input').focusin(function() {
      $(this).css({'background-color' : '#ffffff'});
   });

   $('input').blur(function() {
      if ($.trim($(this).val()) === "") {
         $(this).css({'background-color' : '#ffe5e5'});
      }
   });
});

0 个答案:

没有答案