【问题标题】:Localstorage arrays to be saved in Database using Django使用 Django 将本地存储数组保存在数据库中
【发布时间】:2019-09-12 13:17:12
【问题描述】:

我遇到了某个代码的问题。我还是 Django 和 Jquery 的新手。

所以我有一个表单,所有字段都使用views.py直接存储在数据库中,我使用的是self.request.POST['var'] 对于我保存在后端的每个元素。 它有效,但是 我的问题是,如何从本地存储中存储多个数组。因为,我也在使用一个模式,我将在其中输入某些值。这些值存储在一个项目列表中,并在模式中每次单击添加时发布一个表格行。

我想获取所有这些项目/元素并将其保存在数据库中。

我尝试使用 self.request.POST 但我不断收到类似 MultipleInvalid entry 的错误。我会在这里发送我的代码,谢谢

代码如下。 我也得到了这样的本地存储结果。

我想获取所有的模态元素,因为 Print itemdata 只给出了本地存储的值,所以我想存储每个本地存储的值。 我正在获取这样的 itemdata。

[{"invitem_id":"85","invitem_code":"01086","invitem_desc":"1/2 POGRASS PONENTRY 编程","charge_type":"R","unitofmeasure_id":"33" ,"计量单位代码":"OT","数量":"1" ,"discountamount":"1","discountrate":"","unitcost":"1231.00","grossamount":"1231.00","netamount":"1231.00","vatable":"0","vatexempt ":"1231.00","vatzerorated":"0","vatamount":"0.00"," branch_id":"5","branch_code":"HO","department":"34","department_code":"CCI","employee_id":"647","employee_code":"010019700","employee_name" :"MARIA DORIS ABADILLA","备注":"12312312 "}]

我想将这些值按元素存储在数据库中,但在删除或更改它们时遇到了困难。 我试过 self.object.POST['invitem_id'],通常是其余的。当我尝试检索所有这些时,它说“unicode”对象没有属性“get”。

【问题讨论】:

  • 你需要实际显示代码。
  • 您是否使用 django 表单或者只是在 HTML 中创建您自己的表单?

标签: jquery django modal-dialog local-storage


【解决方案1】:
    <input type="hidden" id="itemdata" name="itemdata">
  <div class="modal" id="myModal">
    <div class="modal-dialog">
     <div class="modal-content">

       <div class="modal-header no-border">
          <div class="row">
              <div class="col-md-12">
              <h4 class="modal-title text-center" id="addtitle">Add Items for Purchase Order</h4>
                    <h4 class="modal-title text-center"id="edittitle">Edit 
 Items for Purchase Order</h4>
                </div>
            </div>
        </div>
        <div class="modal-body">
            <input type="hidden" id="itemidentifier">
            <div class="row">
                <div class="form-group col-md-8">
                    <label class="col-form-label-sm">Item</label>
                        <select id="invitem_name"  name="invitem_name" class="form-control form-control-sm select2" style="width: 100%">
                            <option value="">--- Select Item Here---</option>
                            {% for invitem in invitem %}
                            <option value="{{ invitem.id }}" data-unit="{{ invitem.unitofmeasure_id }}" data-cost="{{ invitem.unitcost }}" data-code="{{ invitem.code }}" data-desc="{{ invitem.description }}">{{ invitem.code }} - {{ invitem.description }}</option>
                            {% endfor %}
                        </select></select>

                </div>
                <div class="form-group col-md-4">

                <label class="col-form-label-sm">Charging Types</label>
                    <select id="charging_type" name="charging_type" 
class="form-control form-control-sm" required>
                        <option value="R">Regular</option>
                        <option value="P">Personal</option>
                        <option value="C">Company</option>
                        <option value="A">Advances</option>
                    </select>
                </div>

            </div>


            <div class="row">

                <div class="form-group col-md-3">
                    <label class="col-form-label-sm">Unit</label>
                    <select id="unitofmeasure_id" name="unitofmeasure" class="form-control form-control-sm" required>
                        <option value="">---Select Unit---</option>
                        {% for unitofmeasure in unitofmeasure %}
                        <option value="{{ unitofmeasure.id }}" data-code="{{ unitofmeasure.code }}" {% if form.unitofmeasure.value|add:0 == unitofmeasure.id %} selected="selected" {% endif %}>{{ unitofmeasure.description }}&nbsp;</option>
                        {% endfor %}
                    </select>
                </div>
                <div class="form-group col-md-3">
                    <label class="col-form-label-sm">Quantity</label>
                        <input type="number" step="any" id="quantity" name="quantity" onkeyup="computeValue()" class="form-control text-right form-control-sm" required>
                        </input>

                </div>
                <div class="form-group col-md-3">

                    <label class="col-form-label-sm">Discount</label>
                    <input type="number" step="any" name="discountamount" id="discountamount" class="form-control text-right form-control-sm" required>

                </div>
                <div class="form-group col-md-3">

                    <label class="col-form-label-sm">Discount Rate</label>
                    <select id="discountrate" name="discountrate" class="form-control form-control-sm" required>
                        <option value="">Select Discount</option>
                        <option value="1">%</option>
                        <option value="2">amt</option>
                    </select>

                </div>

            </div>

            <div class ="row">

                <div class="form-group col-md-4">
                    <label class="col-form-label-sm">Unit Cost</label>
                    <input type="number" step="any" id="unitcost" name="unitcost" onkeyup="computeValue()" class="form-control text-right form-control-sm" required>
                </div>
                <div class="form-group col-md-4">
                    <label class="col-form-label-sm">Gross Amount</label>
                    <input type="number" step="any" id="grossamount" name="grossamount" class="form-control text-right form-control-sm" required>
                </div>
                <div class="form-group col-md-4">
                    <label class="col-form-label-sm">Net Amount</label>
                    <input type="number" step="any" id="netamount" name="netamount" class="form-control text-right form-control-sm" required>
                </div>

            </div>

            <div class = "row">

                <div class="form-group col-md-3">

                    <label class="col-form-label-sm">VATable</label>
                    <input type="number" step="any" name="vatable" id="vatable" class="form-control text-right form-control-sm"  required>

                </div>
                <div class="form-group col-md-3">

                    <label class="col-form-label-sm">VAT Exempt</label>
                    <input type="number" step="any" name="vatexempt" id="vatexempt" class="form-control text-right form-control-sm" required>

                </div>
                <div class="form-group col-md-3">

                    <label class="col-form-label-sm">VAT Zero Rated</label>
                    <input type="number" step="any" name="vatzerorated" id="vatzerorated" class="form-control text-right form-control-sm" required>

                </div>
                <div class="form-group col-md-3">

                    <label class="col-form-label-sm">VAT Amount</label>
                    <input type="number" step="any" name="vatamount" id="vatamount" class="form-control text-right form-control-sm" required>

                </div>

            </div>

            <div class="row">

                <div class="form-group col-md-3">

                <label class="col-form-label-sm">Branch</label>

                    <select id="branch_id" name="branch" class="form-control form-control-sm">
                        <option value="">--- Select Branch ---</option>
                        {% for branch in branch %}
                        <option value="{{ branch.id }}" data-code="{{ branch.code }}" {% if branch.code == 'HO' %} selected="selected" {% endif %}>{{ branch.description }}</option>
                        {% endfor %}
                    </select>

                </div>

                <div class="form-group col-md-4">

                <label class="col-form-label-sm">Department</label>
                    <select id="department_id" name="department" class="form-control form-control-sm" style="width:100%">
                        <option value ="" selected="selected">--- Select Department ---</option>
                        {% for department in department %}
                        <option value="{{ department.id }}" data-code="{{ department.code }}">{{ department.code }} - {{ department.departmentname }}</option>
                        {% endfor %}
                    </select>

                </div>

                <div class="form-group col-md-5">

                    <label class="col-form-label-sm">Employee</label>
                    <select id="employee_id" name="employee" class="form-control form-control-sm select2" style="width: 100%">
                        <option value="" selected="selected">------- Employee Name -------</option>
                        {% for employee in employee %}
                        <option value="{{ employee.id }}" data-code="{{ employee.code }}" data-name="{{ employee.firstname }} {{ employee.lastname }}"> {{ employee.code }} - {{ employee.lastname }}, {{ employee.firstname }}</option>
                    {% endfor %}
                    </select>

                </div>

            </div>

            <div class="row">

                <div class= "form-group col-md-12">

                        <label class="col-form-label-sm">Remarks</label>
                        <textarea class="form-control form-control-sm" id="remarks" style="height: 80px;" name="remarks" required></textarea>

                </div>

            </div>
        </div>

        <div class="modal-footer">

            <div class= "form-group col-md-6">
            </div>
            <div class="form-group col-md-4">

                <button type="button" id="save_item" class="btn btn-primary">Save Item </button>
                <button type="button" id="update_item" class="btn btn-success">Update Item</button>

            </div>
            <div class="form-group col-md-2">

                <button type="button" id="close_item" class="btn btn-danger" data-dismiss="modal"> Close </button>

            </div>

        </div>

    </div>

</div>

用于获取模态值的 JQuery 代码。并存储到本地存储。

$('#save_item').click(function () {

    var validate = validateItems();

    if (validate == false) {
        return false;
    }

    var oldItems = JSON.parse(localStorage.getItem("dataObject")) || [];

    var newItem =
    {
        'invitem_id': $('#invitem_name').val(),
        'invitem_code': $('#invitem_name').find(':selected').attr('data-code'),
        'invitem_desc': $('#invitem_name').find(':selected').attr('data-desc'),
        'charging_type'   : $('#charging_type').val(),
        'unitofmeasure_id': $('#unitofmeasure_id').val(),
        'unitofmeasure_code': $('#unitofmeasure_id').find(':selected').attr('data-code'),
        'quantity'  : $('#quantity').val(),
        'discountamount' : $('#discountamount').val(),
        'discountrate': $('#discountrate').val(),
        'unitcost'   : $('#unitcost').val(),
        'grossamount'   : $('#grossamount').val(),
        'netamount'   : $('#netamount').val(),
        'vatable'   : $('#vatable').val(),
        'vatexempt'   : $('#vatexempt').val(),
        'vatzerorated' : $('#vatzerorated').val(),
        'vatamount'   : $('#vatamount').val(),
        'branch_id': $('#branch_id').val(),
        'branch_code': $('#branch_id').find(':selected').attr('data-code'),
        'department': $('#department_id').val(),
        'department_code': $('#department_id').find(':selected').attr('data-code'),
        'employee_id': $('#employee_id').val(),
        'employee_code': $('#employee_id').find(':selected').attr('data-code'),
        'employee_name': $('#employee_id').find(':selected').attr('data-name'),
        'remarks': $('#remarks').val()
    };



    oldItems.push(newItem);

    localStorage.setItem('dataObject', JSON.stringify(oldItems));
    $('#myModal').modal('hide');

} }

用于获取 itemdata 的 Python 代码(本地存储值,可以是列表或字典),我需要为每个条目使用 self.request.POST。

def form_valid(self, form):


    self.object = form.save(commit=False)

    itemdata = self.request.POST['itemdata']

    print itemdata



    self.object.enterby = self.request.user
    self.object.modifyby = self.request.user
    self.object.save()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2014-07-07
    • 2013-11-09
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    相关资源
    最近更新 更多