Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何列出具有相同ForeignKey属性的对象?_Python_Django - Fatal编程技术网

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”附加到 创建其数据库列名,请参见