如何将以自举模式输入的数据保存到另一个模型中

时间:2019-03-28 11:08:42

标签: python django django-models django-forms bootstrap-modal

我正在尝试创建一个基于django的负载需求匹配Web应用程序,该应用程序在名为 ShipperBoardModel 的模型中采用“负载详细信息”,在此人员(制造商)发布了他们希望运送某些物品的信息在某个地方,以及其他竞标这些职位的人(称为运输者),他们可以按照自己选择的价格完成这项工作。

ShipperBoardModel

class ShipperBoardModel(models.Model):
  From = models.CharField(max_length=100,null=True)
  To = models.CharField(max_length=100,null=True)
  Type = models.CharField(max_length=100,null=True)
  Length = models.CharField(max_length=100,null=True)
  Weight = models.CharField(max_length=100,null=True)
  Numberoftrucks = models.IntegerField(null=True)
  MaterialType = models.CharField(null=True,max_length=100)
  Loadingtime = models.DateTimeField(null=True)

def _str_(self):
    return self.Origin

我创建了第一个“负荷”表,许多人在其上发布了负荷,该表显示在“ / loads /”页面上,其中显示了所有可用于投标的负荷。

enter image description here

我在每行旁边添加了一个“立即出价”按钮,单击该按钮会打开一个表格,询问运输商愿意为该特定负载/任务出价的价格。

点击“立即出价”后,我们会获得一个相对于其所在行的引导模版中的预填充表格。然后,运输人员输入该任务/负载的出价,我要保存该出价进入另一个名为'SupplierBidModel'的模型。

我只想弄清楚如何将投标价格,BidID和每个运输商在注册时已经拥有的运输商ID一起保存到该模型中。

这是表格,后面是模型:

enter image description here

class SupplierBidModel(models.Model):
    BidID = models.AutoField(primary_key=True)
    Load_ID = models.OneToOneField(ShipperBoardModel,on_delete=models.CASCADE)
    Supplier_ID = models.OneToOneField(SupplierBoardModel,on_delete=models.CASCADE)
    Bid_amount = models.IntegerField(null=True)

我在我的models.py中保存了一些数据,并使用该模型渲染表格。现在,我希望用户为每一行输入一个条目,该条目应将数据保存到另一个模型中。

这是模板:

{% block content %}
    <table>
        {% for item in data %}

            <tr>
                <th>From</th>
                <th>To</th>
                <th>Weight</th>
                <th>Length</th>
                <th>Type</th>
                <th>Material Type</th>
                <th>Number of Trucks</th>
                <th>Loading Time</th>
            </tr>
            <tr>
                <td>{{ item.From }}</td>
                <td>{{ item.To }}</td>
                <td>{{ item.Weight }}</td>
                <td>{{ item.Length }}</td>
                <td>{{ item.Type }}</td>
                <td>{{ item.MaterialType }}</td>
                <td>{{ item.Numberoftrucks }}</td>
                <td>{{ item.Loadingtime }}</td>
                <td>
                    <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal{{ item.id }}">Bid
                        now! for id {{ item.id }} </button>
                </td>
                {#        {% endfor %}#}


                <div class="modal fade" id="myModal{{ item.id }}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                    <div class="modal-dialog" role="document">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                                        aria-hidden="true">&times;</span></button>
                                <h4 class="modal-title" id="myModalLabel">Modal title</h4>
                            </div>
                            <div class="modal-body">

                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.To }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.From }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Weight }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Length }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Type }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.MaterialType }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Numberoftrucks }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Loadingtime }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here...">Bid
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                <button type="button" class="btn btn-primary">Save changes</button>
                            </div>

                        </div>
                    </div>
                </div>

            </tr>
        {% endfor %}
    </table>

{% endblock %}

我尚不知道如何在django中的页面上呈现表单,该页面已经存在表单。渲染表格的唯一方法是使用urls.py方法:

urlpatterns = [
    url(r'supplier', views.supplierboardfun, name='supplierboard'),
    url(r'shipper', views.shipperboardfun, name='shipperboard'),
    url(r'loads', views.suppliertablefun, name='supplierboardtable')
]

调用函数Suppliertablefun()

def suppliertablefun(request):                     # function to display shipperboardmodel
    data = ShipperBoardModel.objects.all()
    return render(request, 'supplierboard/board.html', locals())

我可能不知道如何在Django中使用不同的模型呈现多个表单,或者如何从输入框中保存数据,并将其与一些相关信息一起保存到我喜欢的模型中。

1 个答案:

答案 0 :(得分:0)

我知道了。我能够做到这一点

def suppliertablefun(request):                     # function to display shipperboardmodel
    data = ShipperBoardModel.objects.all()

    if request.method == 'POST':
        forminput = BiddingForm(request.POST)
        if forminput.is_valid():
            forminput.save()

    forminput = BiddingForm(request.POST)
    return render(request, 'supplierboard/board.html', locals(),{'forminput': forminput})