在模型.py在
class MaterialRequest(models.Model):
owner = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='allotment_sales')
flow = models.ForeignKey(Flow, on_delete=models.CASCADE, related_name='flow')
kit = models.ForeignKey(Kit, on_delete=models.CASCADE, related_name='kit')
quantity = models.IntegerField(default=0)
is_allocated = models.BooleanField(default=False)
class AllotmentDocket(models.Model):
transaction_date = models.DateField(default=datetime.now)
dispatch_date = models.DateField(default=datetime.now)
sales_order = models.ForeignKey(MaterialRequest, on_delete=models.CASCADE, related_name='allotment_sales')
parent_company = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='allotment_parent')
plastic_pallet = models.IntegerField(default=0)
side_wall = models.IntegerField(default=0)
top_lid = models.IntegerField(default=0)
insert = models.IntegerField(default=0)
separator_sheet = models.IntegerField(default=0)
我想访问所有的材料请求以及那些有分配记录的创建一个表。 例如,我有5个物料申请和3个分配摘要,我想要一个表,其中有5行显示物料请求对象和相应分配对象的所有详细信息
像这样:
^{pr2}$在视图.py在
def mat_details(request):
value = request.POST['my-select']
start = request.POST['from']
end = request.POST['to']
client_pk = Client.objects.filter(client_name = value)[0]
mat_req = MaterialRequest.objects.filter(owner = client_pk.pk, created_on__range =[start, end] )
return render(request, 'packsapp/employee/matdeatils.html', {'query': mat_req})
正如Iulia在另一个答案中所说,}之间的关系是外键,意味着一个{}可以有多个{}。如果发生这种情况,那么可以使用^{} 在单个查询中使用^{} 从反向关系中求出{}、
MaterialRequest
和{side_wall,
top_lid
、insert
的值。例如:并在模板中使用:
^{pr2}$顺便说一句(或者可能不相关),如果}之间存在{a3}关系,那么您只需在模板中使用}信息。在
MaterialRequest
和{{{ i.allotment_parent.side_wall }}
来获取{两个表有一对多关系,这意味着一个
MaterialRequest
条目可以有多个对应的AllotmentDocket
条目。在因为您将一个
related_name
添加到ForeignKey
到MaterialRequest
,所以每个MaterialRequest
对象都有一个名为allotment_sales
的属性,它是检索和操作与当前MaterialRequest
相关的所有AllotmentDocket
对象的方法。在尝试在Django shell中执行以下操作:
你可以阅读更多关于这个here。在
关于您要显示的表,如果每一行都是
MaterialRequest
记录,那么AllotmentDocket
中的列应该如何计算?它们是否聚合在一起,例如platic_pallet
是物料请求的分配摘要的所有platic_pallet
值的总和/平均值?在如果您正在考虑一个表显示,也许您应该让每一行代表一个
AllotmentDocket
对象,即一对多关系中的“多”部分。在相关问题 更多 >
编程相关推荐