型号
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行显示了物料请求对象和各个分配对象的所有详细信息
像这样:
owner flow kit quantity platic_pallet side_wall top_lid Insert
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 - - - -
5 5 5 5 - - - -
Views.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})
最佳答案
您的两个表具有一对多关系,这意味着一个MaterialRequest
条目可以具有多个对应的AllotmentDocket
条目。
因为您在related_name
的ForeignKey
中添加了MaterialRequest
,所以每个MaterialRequest
对象将具有一个名为allotment_sales
的属性,这是一种检索和处理与当前AllotmentDocket
相关的所有MaterialRequest
对象的方法。 >。
尝试在Django Shell中执行以下操作:
>>> material_request = MaterialRequest.objects.first()
>>> material_request.allotment_sales.count()
>>> material_request.allotment_sales.all()
>>> material_request.allotment_sales.first()
您可以阅读有关此here的更多信息。
关于您要显示的表,如果每一行都是
MaterialRequest
记录,应如何计算AllotmentDocket
中的列?它们是否聚合,例如platic_pallet
是物料申请的分配表的所有platic_pallet
值的总和/平均值吗?如果您考虑使用表格显示,也许您应该让每一行代表一个
AllotmentDocket
对象,即一对多关系中的“许多”部分。