如何确保表单数据在Django中正确发布

如何确保表单数据在Django中正确发布,django,modal-dialog,inline-formset,Django,Modal Dialog,Inline Formset,我使用来自Ajax回调的数据填充Django表单集(不包括一些由用户手动填充的表单元素)。我正在尝试自动填充大多数表单元素以消除错误。但是,在“发布”时,数据不会保存在相应的模型中 使用相同的过程,我能够创建记录(用户(手动)填写数据)无法找出我的错误所在? 型号.py: class mappedTargModel(models.Model): mapper_id = models.AutoField(primary_key=True, verbose_name='Map ID')

我使用来自Ajax回调的数据填充Django表单集(不包括一些由用户手动填充的表单元素)。我正在尝试自动填充大多数表单元素以消除错误。但是,在“发布”时,数据不会保存在相应的模型中

使用相同的过程,我能够创建记录(用户(手动)填写数据)无法找出我的错误所在?

型号.py

class mappedTargModel(models.Model):
    mapper_id = models.AutoField(primary_key=True, verbose_name='Map ID')
    mapper_name = models.CharField(max_length=50, verbose_name='Mapper name')
    mapper_target_model = models.CharField(max_length=100, verbose_name='Target Table')
    mapper_long_text = models.CharField(max_length=250, null=True, blank=True, verbose_name='Long Text')

class mappedTargFields(models.Model):
    mapper_item = models.AutoField(primary_key=True, verbose_name='Item Number')
    mapper_header = models.ForeignKey(mappedTargModel, related_name='mapper_hdr_tab', on_delete=models.CASCADE, verbose_name='Mapper')
    mapped_field = models.CharField(max_length=100, verbose_name='Target Field')
    mapped_field_verb_name = models.CharField(max_length=100, verbose_name='Name')
    mapped_field_col_name = models.CharField(max_length=25, verbose_name='Col Name')
    mapped_field_fk_table = models.CharField(max_length=100, verbose_name='Field Related To')
视图.py

def MapperDataImportConstruct(request, object_id=False):
    template = "map/mapper_construct.html"

    if object_id:
        qs_targ_model_form = mappedTargModel.objects.get(pk=object_id)
    else:
        qs_targ_model_form = mappedTargModel()

    target_field_formset = CreateMappedTargFieldsFormset()
    if request.method == 'POST':
        new_qs_targ_model_form = mappedTargModelForm(data=request.POST, instance=qs_targ_model_form)

        if new_qs_targ_model_form.is_valid():
            qs_targ_model_form = new_qs_targ_model_form.save(commit=False)
            target_field_formset = CreateMappedTargFieldsFormset(request.POST, instance=qs_targ_model_form)

            if target_field_formset.is_valid():
                qs_targ_model_form.save()
                target_field_formset.save()

    else:
        new_qs_targ_model_form = mappedTargModelForm()
        target_field_formset = CreateMappedTargFieldsFormset(instance=qs_targ_model_form)

    context = {
        'target_model_form': new_qs_targ_model_form,
        'target_field_formset': target_field_formset,
        #    .... (context objects for getting values from Ajax callback)
        #    .... (context objects for getting values from Ajax callback)
        }
    return render(request, template, context)
模板

<form action="" method="POST" class="form" id="add_new_mapper_form" novalidate>
{% csrf_token %}
    <div class="modal-content">
        <div class="modal-header modal-title">
            <h5 class="modal-title" id="addNewProductModalFormLabel">Add New Mapper</h5>
            <button type="button" id="btnCloseModalX" class="close" data-dismiss="modal" aria-label="Close"> 
                <span aria-hidden="true">&times;</span>
            </button>
        </div>
        <div class="modal-body">
            {{ target_model_form.as_p }}
            <div class="col-md-12 text-nowrap" style="font-family:'Courier New'">
                {{ target_field_formset.management_form }}
            </div>

        </div>
        <div class="modal-footer">
            <input type="submit" id="btnSaveAsMappedModal" class="btn btn-info" value="Save"> 
            <input type="button" id="btnCloseModal" class="btn btn-info" value="Close" data-dismiss="modal"> 
        </div>
    </div>
</form>

{%csrf_令牌%}
添加新映射器
&时代;
{{target_model_form.as_p}
{{target_field_formset.management_form}
您有

if new_qs_targ_model_form.is_valid():
            qs_targ_model_form = new_qs_targ_model_form.save(commit=False)
            target_field_formset = CreateMappedTargFieldsFormset(request.POST, instance=qs_targ_model_form)

            if target_field_formset.is_valid():
                qs_targ_model_form.save()
                target_field_formset.save()
当您的表单或表单集无效时(首先出现打印错误),添加else案例以执行某些操作