简体   繁体   English

如何列出具有相同 ForeignKey 属性的对象?

[英]How to list objects that have the same ForeignKey attribute?

I want to list all approval steps that have the same approval_id on one page.我想在一页上列出所有具有相同approval_id的批准步骤。 I can list every ApprovalSteps in my views but that is not what I want.我可以在我的视图中列出每个ApprovalSteps ,但这不是我想要的。 For example, I have an approval object with ApprovalProcess id is 1. I want to list all approval steps with approval_id = 1 in my template.例如,我有一个审批 object,其中ApprovalProcess id 为 1。我想在我的模板中列出所有审批步骤,其中approval_id = 1。 How can I do that?我怎样才能做到这一点?

models.py模型.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')
    ...

views.py视图.py

def approval_details(request, pk):
    approval_item = get_object_or_404(ApprovalSteps, id=pk)
    return render(request, 'approval_details.html', {'approval_item': approval_item})

You can change your approval_details view function to您可以将您的approval_details视图function 更改为

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})

Refer here参考这里

To access the related objects ApprovalProcess to ApprovalSteps , you can use _set ( Django Docs ).要访问ApprovalProcessApprovalSteps的相关对象,您可以使用_set ( Django Docs )。

So in your case in you template approval_item.approval_id_set.all :因此,在您的情况下,您的模板approval_item.approval_id_set.all

{% for item in approval_item.approval_id_set.all %}
    {{ item.doc_id }}
{% endfor %}

in views.py:在views.py中:

approval_item.approval_id_set.all()

Or use ForeignKey.related_name :或使用ForeignKey.related_name

approval_id = models.ForeignKey(
    ApprovalProcess, on_delete=models.CASCADE, null=True, 
    related_name="processes"
)
# then you can use 
approval_item.processes.all()

Also I recommend you to rename approval_id to approval because:另外,我建议您将approval_id重命名为approval ,因为:

Behind the scenes, Django appends "_id" to the field name to create its database column name, see Django ForeignKey在幕后,Django 将“_id”附加到字段名称以创建其数据库列名称,请参阅Django ForeignKey

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何计算具有ForeignKey关系的对象数? - How to count objects count that have ForeignKey relationship? 返回列表中与另一个对象具有相同属性的所有对象? - Returning all objects in list which have the same attribute as another object? 检索列表中的所有对象在python中的属性是否具有相同的值 - Retrieving if all objects in a list have the same value for an attribute in python 检查 python 中的两个对象是否具有相同的属性 - check if two objects have the same attribute in python django 如何从同一模型中获得多个外键 - django how to have multiple foreignkey from the same model Flask-SQLAlchemy 如何存储 ForeignKey 对象列表 - Flask-SQLAlchemy how to store list of ForeignKey Objects 如何检查 2 class 对象在 python 的列表中是否具有相同的参数? - How to check if 2 class objects have same parameters inside a list in python? 如何根据对象的属性对对象列表进行排序? - How to sort a list of objects based on an attribute of the objects? 如果第一个属性相同,则按多个属性对对象列表进行排序 - Sorting list of objects by more than one attribute if the first attribute is the same beautifulsoup 对象如何能够将标签作为属性? - How beautifulsoup objects able to have a tag as an attribute?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM