Отправка динамически созданного поля ввода в django

#django #python-3.x

#django #python-3.x

Вопрос:

я работаю над проектом с Django, я динамически создал поле ввода и пытаюсь отправить его, но у меня не получилось этого сделать, я поискал в Интернете и увидел, что это можно сделать с помощью formset_factory, но когда я попробовал это, я получил эту ошибку

 CatName = int(float(request.POST.get('CatName')))
TypeError: float() argument must be a string or a number, not 'NoneType'
  

вот мой код

the form.html

 <form action="." method="post" id="PostCat__form">{% csrf_token %}
                <input type="hidden" name="deyHidden" value="category_hidden">
                {% comment %} {{ catForm | crispy }}       
                <input type="hidden" name="deyHidden" value="category_hidden"> {% endcomment %}
                <input type="text" class="form-control" name="CatName[]" >
                <input type="text" class="form-control" name="CatName[]" >
                <input type="text" class="form-control" name="CatName[]" >
                <input type="text" class="form-control" name="CatName[]" >

                <div class="form-group">
                    <h6 id="PostCat__show"></h6>
                    <img src=" {% static 'images/ajax-loader.gif' %}" style="Display:none;" id="PostCat__img">
                    <button class="btn btn-outline-info" type="submit"   id="PostCat__submit">Create</button>
                </div>
            </form>
  

the model.py

 class Category(models.Model):
    CatName = models.CharField(max_length=100)
  

the view.py

         myFormCat = CatPostForm(request.POST)
        CatName = int(float(request.POST.get('CatName')))
        # print(CatName)
        formset = formset_factory(FormsetForm, CatName=CatName)(request.POST)

        if myFormCat.is_valid() and formset.is_valid():
            for form_c in formset:
                if not form_c.cleaned_data['CatName']:
                    Category.objects.get_or_create(CatName=CatName)
                    response_data = {
                        'SType': 'success',
                        'message': "Saved Successfully"
                    }                
        return HttpResponse(json.dumps(response_data), content_type="application/json")
  

the forms.py

 class CatPostForm(forms.ModelForm):
    class Meta: 
        model=Category
        fields = ['CatName']
  

пожалуйста, как я могу это сделать, чтобы я мог успешно отправить форму,

Ответ №1:

на вашем views.py

 from django.forms import formset_factory
CatPostFormSet = formset_factory(CatPostForm)
catformset = CatPostFormSet() #this goes to your page context. do the validations here also after the post
  

на вашем form.html

 <form method="post">
    {{ formset.management_form }}
        {{formset}}
</form>
  

Комментарии:

1. вызовите MultiValueDictKeyError (ключ) django.utils.datastructures. Ошибка MultiValueDictKeyError: ‘Имя кошки’

2. используйте один ввод как <input type="text" class="form-control" name="CatName" >

3. Я хочу отправить несколько полей ввода с именем тега catName, поэтому я использовал catName[]

4. тогда вам нужен formset_factory. Взгляните на официальный документ: docs.djangoproject.com/en/2.1/topics/forms/formsets

5. Я сделал, но не понял этого