python - 如何将在引导模式中输入的数据保存到另一个模型中
问题描述
我正在尝试创建一个基于 django 的负载需求匹配网络应用程序,该应用程序在名为ShipperBoardModel的模型中采用“加载详细信息”,其中人们(制造商)发布他们希望将某些物品交付到某处的其他人(称为运输商)谁以他们选择的价格竞标这些职位,他们可以完成这项工作。
ShipperBoard模型
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/”页面上,其中显示了所有可供投标的活动负载。
我在每一行旁边添加了一个“立即出价”按钮,单击该按钮会打开一个表单,询问运输商他们愿意为该特定负载/任务出价的价格。
单击“立即出价”后,我们会在引导模式中获得一个相对于其所在行的预填充表单。然后,运输商输入他对该任务/负载的出价,我想将其保存到另一个名为“SupplierBidModel”的模型中' .
我只是想弄清楚如何将该投标价格连同 BidID 以及每个运输商注册时已经拥有的运输商 ID 一起保存到该模型中。
这是表格,后面是模型:
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">×</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')
]
调用函数供应商tablefun()
def suppliertablefun(request): # function to display shipperboardmodel
data = ShipperBoardModel.objects.all()
return render(request, 'supplierboard/board.html', locals())
我可能错过了如何在 django 中呈现具有不同模型的多个表单,或者如何从输入框中保存数据,并将其与一些相关信息一起保存到我喜欢的模型中。
解决方案
我想到了。我能够做到这一点
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})
推荐阅读
- html - 范围滑块会不一致地消失?
- go - 如何在 GO 中初始化多层嵌套结构?
- c++ - 快速且无锁的单写入器,多读取器
- azure - 通过 terraform 创建 Azure 警报失败,错误代码为 400
- javascript - Angular Pipe - 字符串的 groupBy 子串(自定义管道)
- c# - 如何从 Solace 队列中轮询消息(而不是默认推送行为)?
- spring-boot - 大型 IP f5 负载均衡器中的 SSE 支持
- mysql - MySQL 从同一个表中选择具有多个值的条目
- javascript - 如何在 Paho 中获取最后五条消息?
- javascript - 在 FOR 完成后,最后一次 FOR 循环的值