首页 > 解决方案 > 通过在 html 中使用多个复选框,我应该如何在 django 中获取数据并存储在数据库中?

问题描述

我在 html 中创建多个复选框,现在我想获取这些数据并将其存储在数据库中。我使用 MySQL 作为数据库,我使用 django 中的 django-multiselectfield( django-multiselectfield ) 库在 django 中创建复选框。

模型.py 文件

from multiselectfield import MultiSelectField
from django.db import models

class Teacher(models.Model):
    id=models.AutoField(primary_key=True)
    SCHOOL_BOARD_CHOICES = [
        ('State', 'State'),
        ('CBSE', 'CBSE'),
        ('ICSE', 'ICSE'),
    ]
    school_board = MultiSelectField(choices=SCHOOL_BOARD_CHOICES, blank=True, null=True)

这就是它在 django 的管理仪表板中的样子 school_board 图像

.html 文件

            <form role="form" action="{% url 'register_save' %}" method="post" enctype="multipart/form-data">
          {% csrf_token %}
          <div class="form-group">
            <label for="username">Username</label>
            <input type="text" class="form-control" name="username" id="username" placeholder="Enter username">
          </div>
          <div class="form-group">
            <label for="fname">First Name</label>
            <input type="text" class="form-control" name="fname" id="fname" placeholder="Enter your first name">
          </div>
          <div class="form-group">
            <label for="lname">Last Name</label>
            <input type="text" class="form-control" name="lname" id="lname" placeholder="Enter your last name">
          </div>
          <div class="form-group">
            <label for="email">Email address</label>
            <input type="email" class="form-control" name="email" id="email" aria-describedby="emailHelp"
              placeholder="Enter email">
          </div>
          <div class="form-group">
            <label for="pass">Password</label>
            <input type="password" class="form-control" name="pass" id="pass" placeholder="Password">
          </div>
          <div class="form-group">
            <label for="cpass">Confirm Password</label>
            <input type="password" class="form-control" name="cpass" id="cpass" placeholder="Confirm Password">
          </div>
          <div class="form-group">
            <label for="category">Choose Category</label>
            <select class="form-control" id="category" name="category">
              <option>School</option>
              <option>College</option>
              <option>Engineering</option>
              <option>Professional</option>
            </select>
          </div>
          <p>Class(es) you teach</p>
          <div style="margin-top: 0.5px;" class="form-group form-check">
            <input type="checkbox" class="form-check-input" name="school_class" id="jrkg">
            <label class="form-check-label" for="school_class">Jr. Kg</label><br>
            <input type="checkbox" class="form-check-input" name="school_class" id="srkg">
            <label class="form-check-label" for="school_class">Sr. Kg</label><br>
            <input type="checkbox" class="form-check-input" name="school_class" id="first">
            <label class="form-check-label" for="school_class">I</label><br>
            <input type="checkbox" class="form-check-input" name="school_class" id="secind">
            <label class="form-check-label" for="school_class">II</label><br>
            <input type="checkbox" class="form-check-input" name="school_class" id="third">
            <label class="form-check-label" for="school_class">III</label><br>
          </div>
          <div class="form-group">
            <label for="profile_pic">Profile Pic</label>
            <input type="file" class="form-control-file" name="profile_pic" id="profile_pic">
          </div><br>
          <button type="submit" class="btn btn-primary">Register</button>
        </form>

视图.py 文件

def register(request):
return render(request, "register.html") 

def register_save(request):
    if request.method!="POST":
        return HttpResponse("Method Not Allowed")
    else:
        username=request.POST.get("username")
        first_name=request.POST.get("fname")
        last_name=request.POST.get("lname")
        email=request.POST.get("email")
        password=request.POST.get("pass")
        # confirm_password=request.POST.get("cpass")
        category=request.POST.get("category")
        school_class=request.POST.get("school_class")
        profile_pic=request.FILES["profile_pic"]
        try:
            user=CustomUser.objects.create_user(username=username,password=password,email=email,first_name=first_name, last_name=last_name,user_type=1)
            user.teacher.i_will_teach_for=category
            
            user.teacher.school_class=school_class
            user.teacher.profile_pic=profile_pic
            user.save()
            messages.success(request,"Successfully Created The Account")
            return HttpResponseRedirect(reverse("register"))
        except Exception as e:
            messages.error(request, f"Failed to register. Error{e}")
            return HttpResponseRedirect(reverse("register"))

当我保存数据时,正在存储其他字段数据,但我不知道如何存储复选框数据。有人可以指导一下吗?

标签: pythonhtmldjangoformsdjango-models

解决方案


推荐阅读