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对象添加到视图的上下文中?您在上下文中获得了主对象,因此无需在模板执行过程中获取所有需要的数据,因此不需要将相关对象添加到上下文中。此处的更多信息:这是一种魅力。最后一个问题,调用_是否会使模板渲染速度降低很多?很多?它始终取决于您使用的数据库和数据集的大小。但此时您不应该关心性能,我想,所有性能升级都应该在出现性能问题时进行