Python 如何列出具有相同ForeignKey属性的对象?
我想在一页上列出所有具有相同Python 如何列出具有相同ForeignKey属性的对象?,python,django,Python,Django,我想在一页上列出所有具有相同approval\u id的审批步骤。我可以在视图中列出每个批准步骤,但这不是我想要的。例如,我有一个审批对象,其ApprovalProcessid为1。我想在我的模板中列出approval\u id=1的所有审批步骤。我该怎么做 型号.py class ApprovalProcess(models.Model): id = models.AutoField(primary_key=True) user_id = models.ForeignKey(U
approval\u id
的审批步骤。我可以在视图中列出每个批准步骤
,但这不是我想要的。例如,我有一个审批对象,其ApprovalProcess
id为1。我想在我的模板中列出approval\u id
=1的所有审批步骤。我该怎么做
型号.py
class ApprovalProcess(models.Model):
id = models.AutoField(primary_key=True)
user_id = models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, related_name='starter')
doc_id = models.ForeignKey(Pdf, on_delete=models.CASCADE, null=True)
...
class ApprovalSteps(models.Model):
approval_id = models.ForeignKey(ApprovalProcess, on_delete=models.CASCADE, null=True)
starter = models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, related_name='step_starter')
...
def approval_details(request, pk):
approval_item = get_object_or_404(ApprovalSteps, id=pk)
return render(request, 'approval_details.html', {'approval_item': approval_item})
视图.py
class ApprovalProcess(models.Model):
id = models.AutoField(primary_key=True)
user_id = models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, related_name='starter')
doc_id = models.ForeignKey(Pdf, on_delete=models.CASCADE, null=True)
...
class ApprovalSteps(models.Model):
approval_id = models.ForeignKey(ApprovalProcess, on_delete=models.CASCADE, null=True)
starter = models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, related_name='step_starter')
...
def approval_details(request, pk):
approval_item = get_object_or_404(ApprovalSteps, id=pk)
return render(request, 'approval_details.html', {'approval_item': approval_item})
您可以将
approval\u details
查看功能更改为
def approval_details(request, pk):
approval_items_list = get_list_or_404(ApprovalSteps, approval_id=pk)
return render(request, 'approval_details.html', {'approval_items_list': approval_items_list})
请参阅要访问相关对象
ApprovalProcess
到ApprovalSteps
,您可以使用()
因此,在您的情况下,在您的模板approval\u item.approval\u id\u set.all
:
{% for item in approval_item.approval_id_set.all %}
{{ item.doc_id }}
{% endfor %}
在views.py中:
approval_item.approval_id_set.all()
或使用:
approval\u id=models.ForeignKey(
ApprovalProcess,on_delete=models.CASCADE,null=True,
相关的\u name=“流程”
)
#然后你可以用
批准项目流程所有()
另外,我建议您将批准_id重命名为批准,因为: 在幕后,Django将“_id”附加到 创建其数据库列名,请参见