Как сохранить несколько входных данных поля формы в одной таблице (модели) в Django - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу сохранить несколько входных данных одной формы в одну базу данных (модель).После отправки формы два входных значения будут добавлены в один клик, что означает, что я хочу добавить две категории и два описания с уникальным идентификатором обоих в один клик кнопки отправки.

Form.html Файл

 <form class="well form-horizontal" method="post" action="{% url 'add_category' %}">
                        {% csrf_token %}
                          <fieldset>
                             <div class="form-group">
                                <label class="col-md-4 control-label">Category Name</label>
                                <div class="col-md-6 inputGroupContainer">
                                   <div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input id="fullName" name="cname" placeholder="Full Name" class="form-control" required="true" value="" type="text"></div>
                                </div>
                             </div>
                             <div class="form-group">
                                <label class="col-md-4 control-label">Description</label>
                                <div class="col-md-6 inputGroupContainer">
                                   <div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-home"></i></span>
<input id="addressLine1" name="desc" placeholder="Address Line 1" class="form-control" required="true" value="" type="text"></div>
                                </div>
                             </div>


                             <div class="form-group">
                                <label class="col-md-4 control-label">Category Name</label>
                                <div class="col-md-6 inputGroupContainer">
                                   <div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input id="fullName" name="cname1" placeholder="Full Name" class="form-control" required="true" value="" type="text"></div>
                                </div>
                             </div>
                             <div class="form-group">
                                <label class="col-md-4 control-label">Description</label>
                                <div class="col-md-6 inputGroupContainer">
                                   <div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-home"></i></span>
<input id="addressLine1" name="desc1" placeholder="Address Line 1" class="form-control" required="true" value="" type="text"></div>
                                </div>
                             </div>
                             <button>Submit</button>
                          </fieldset>
                       </form>

Model.Py File

class Category(models.Model): 
cname = models.CharField(max_length=20)
desc = models.CharField(max_length=50)

def __str__(self):
    return self.cname

Views.Py File

def add_category(request):
print("from is submitted successfully!")
cname = request.POST.get(["cname","cname1"], False)
desc = request.POST.get(["desc","desc1"], False)

CategoryAdd = Category(cname = [cname,cname1], desc = [desc,desc1])
CategoryAdd.save()

return render(request,'addcategory.html')

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать getlist для операции, а также zip cname и desc, чтобы получить кортеж и преобразовать zip в список и добавить в базу данных. Но для этого вам нужно указать, чтобы атрибут html входных элементов name был таким же.

Файл формы HTML

<form>
  <input name="cname[]" placeholder="Full name"/>
  <input name="desc[]" placeholder="Description"/>
  <input name="cname[]" placeholder="Full name"/>
  <input name="desc[]" placeholder="Description"/>
</form>

Model.Py File

class Category(models.Model): 
  cname = models.CharField(max_length=20)
  desc = models.CharField(max_length=50)

  def __str__(self):
      return self.cname

Просмотр файла.

def add_category(request):
  print("from is submitted successfully!")
  cname = request.POST.getlist("cname[]")
  desc = request.POST.getlist("desc[]")
  if len(cname)==len(desc) and cname and desc:
    mapped=zip(cname,desc)
    mapped=list(mapped)
    for ele in mapped:
      CategoryAdd,created = Category.objects.get_or_create(cname = ele[0],desc=ele[1])
  return render(request,'addcategory.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...