首页 > 解决方案 > 仅显示登录用户的项目

问题描述

我正在开发一个管理一些项目的 django 项目。在一个视图中,我必须只显示登录用户的项目,但我所做的一切都不起作用,我真的不知道还能尝试什么。我是编程新手。

基本上我的应用程序有一个只有一个字段的 Worker 模型:worker = models.ForeignKey(User)

然后它有一个只有一个字段的责任模型: responsable = models.ForeignKey(User) 我有这两个模型,因为我需要将工人和责任人中的用户分开。

这是我的项目模型:

class Project(models.Model):
  title = models.CharField(max_length=255)
  description = models.CharField(max_length=1000)
  client = models.ForeignKey(Cliente, on_delete=models.CASCADE)
  complete = models.BooleanField(default=False)
  urgent = models.BooleanField(default=False)
  deadline = models.DateField()
  worker = models.ForeignKey(Worker, on_delete=models.CASCADE)
  responsable = models.ForeignKey(Responsable, on_delete=models.CASCADE)

这是在我的views.py中:

from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import Project

@login_required(login_url='/accounts/login/')
def projectsWorkers(request):
  user = request.user
  user_projects = Project.objects.filter(worker=user).order_by('deadline')
  template = 'projects/projects-worker-home.html'
  return render(request, template, {'user_projects': user_projects, 'user': user})

但我收到一个错误:无法查询“Simone”:必须是“Worker”实例。

我认为问题在于,在我的项目模型中,worker 字段具有 Worker 而不是 User 的外键,但我无法更改它,那我该怎么办?

标签: djangodjango-filterdjango-users

解决方案


根据评论

基本上我的应用程序有一个只有一个字段的 Worker 模型:worker = models.ForeignKey(User),您应该访问模型的worker字段,Worker以便:

user_projects = Project.objects.filter(worker__worker=user).order_by('deadline')

因此,第一个worker遵循ForeignKeyProject模型到Worker模型,第二个遵循workerWorker模型到User模型。


推荐阅读