django中的相关模型查询

django中的相关模型查询,django,database,django-templates,django-queryset,Django,Database,Django Templates,Django Queryset,我有如下相互关联的树模型: 第一节课有关于这个项目的基本信息 class Project(models.Model): customer = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete = models.CASCADE,) title = models.CharField(max_len

我有如下相互关联的树模型:

第一节课有关于这个项目的基本信息

class Project(models.Model):
    customer =  models.ForeignKey(
                                settings.AUTH_USER_MODEL,
                                on_delete = models.CASCADE,)
    title = models.CharField(max_length=200)
    pub_date = models.DateTimeField(default=timezone.now)
第二个类用于注册与每个项目相关的类别

class ProjectCategory(models.Model):
    project = models.ForeignKey(
                                Project,
                                on_delete = models.CASCADE)
    projectCategory = models.ForeignKey(
                                Category,
                                on_delete=models.CASCADE)
最后一个模型指示项目的位置

class ProjectLocation(models.Model):
    project = models.ForeignKey(
                                Project,
                                on_delete = models.CASCADE)
    projectLocation = models.ForeignKey(
                                Location,
                                on_delete=models.CASCADE)
我试图在模板中呈现项目列表。 我想显示与每个项目相关的信息(类别和位置)。 如何才能做到这一点?
使用查询Project.objects.all()不允许我访问字段“projectLocation”和“projectCategory”

在外键字段中添加一个
相关的\u名称
,您可以用这个名称访问它们

例如ProjectCategory:

class ProjectCategory(models.Model):
    project = models.ForeignKey(Project, related_name='categories')
现在你可以做:
project.categories.all()

您的项目模型没有这些字段。要访问相关模型,您必须将
\u set
添加到字段名中,如
projectLocation\u set
。记住all()返回的列表不仅仅是一个元素。projectLocation还是projectLocation?我是否应该将ProjectLocation对象添加到视图的上下文中?您在上下文中获得了主对象,因此无需在模板执行过程中获取所有需要的数据,因此不需要将相关对象添加到上下文中。此处的更多信息:这是一种魅力。最后一个问题,调用_是否会使模板渲染速度降低很多?很多?它始终取决于您使用的数据库和数据集的大小。但此时您不应该关心性能,我想,所有性能升级都应该在出现性能问题时进行