Python 使用外键引用另一个Django模型中的变量

Python 使用外键引用另一个Django模型中的变量,python,django,Python,Django,我有一个项目模型,用户可以在其中添加一个项目,该项目具有相关的职位。例如,网站将是项目,而web开发人员将是职位。这里有两个模型 class Project(models.Model): owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='project') created_at = models.DateTimeField(auto_now_add=True) title = models.

我有一个项目模型,用户可以在其中添加一个项目,该项目具有相关的职位。例如,网站将是项目,而web开发人员将是职位。这里有两个模型

class Project(models.Model):
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='project')
    created_at = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=255)
    description = models.TextField()
    complete = models.BooleanField(default=False)

    def __str__(self):
        return self.title.title()


class Position(models.Model):
    project = models.ForeignKey(Project, default='',related_name='positions')
    name = models.CharField(max_length=140)
    description = models.TextField()
    skill = models.ForeignKey(Skill, default='')
    filled = models.BooleanField(default=False)

    def __str__(self):
        return '{} - {}'.format(self.project.title.title(), self.name.title())
我创建了一个视图来显示用户的个人资料和任何当前或过去的项目。见下文:

class ProfileView(LoginRequiredMixin,generic.TemplateView):
    template_name = 'accounts/profile.html'
    login_url = settings.LOGIN_REDIRECT_URL

    def get_context_data(self, **kwargs):
        context = super(ProfileView, self).get_context_data(**kwargs)
        lookup = kwargs.get('username')
        user = models.User.objects.get(username=lookup)
        profile = models.UserProfile.objects.prefetch_related('skills').get(user=user)
        context['profile'] = profile
        context['skills'] = [skill for skill in profile.skills.all()]

        projects = models.Project.objects.all()
        context['current_projects'] = projects.filter(Q(owner=user) & Q(complete=False))
        context['past_projects'] = projects.filter(Q(owner=user) & Q(complete=True))
        return context
我不知道如何在html模板中引用特定项目的位置。我知道如果我尝试使用python shell,我可以查询position类并获取所有对象,然后从中获取项目变量

我试图在视图中创建一个位置“上下文”,如下所示:

positions = m.Position.objects.all()
        context['positions'] = positions.filter(Q(owner=user)& Q(complete=False))
positions.filter(Q(project__owner=user) & Q(project__complete=False))

但Django不喜欢“owner”变量——我理解这一点,因为我只是从头寸中获取数据。我知道在shell中,我可以执行类似于
m=Position.objects.all()
的操作,然后执行
m[0].project.title
来获取项目数据。出于某种原因,我就是不明白如何在代码中把它们放在一起。非常感谢您的帮助!这件事让我绞尽脑汁好一阵子了

要遍历相关对象,可以使用模型的小写名称,后跟
\uuu
(2个下划线)和另一个模型中的字段名

因此,与此相反:

这样写:

positions = m.Position.objects.all()
        context['positions'] = positions.filter(Q(owner=user)& Q(complete=False))
positions.filter(Q(project__owner=user) & Q(project__complete=False))