在Django中保存当前登录用户的数据

2024-05-16 19:43:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我是django的新手,我想知道如何保存仅显示登录用户的数据,因为我的应用程序是多租户的

我的观点

class ProjetoCreate(CreateView):
    model = Projeto
    fields = ['nomeProjeto',
              'descricao',
              'dtInicio',
              'deadline',
              'nomeSprint',
              'status',
              ]

    def get_queryset(self):
        logged_user = self.request.user
        return Projeto.objects.filter(User=logged_user)

class ProjetoList(ListView):
    paginate_by = 2
    model = Projeto

我的型号

class Projeto(models.Model):
    nomeProjeto = models.CharField(max_length=20)
    descricao = HTMLField()
    dtInicio = models.DateField(auto_now=False, auto_now_add=False)
    deadline = models.DateField(auto_now=False, auto_now_add=False)
    nomeSprint = models.CharField(max_length=30)
    status = models.CharField(max_length=20)

多谢各位


Tags: falseautomodelmodelslengthnowmaxclass
2条回答

我认为你完全错了

CreateView-https://stackoverflow.com/a/24043478/4626254中根本不应该使用get_queryset()

以下是您可以尝试的方法

  1. Project模型中添加一个用户字段并应用迁移。 user = models.ForeignKey(User, on_delete=models.CASCADE)
  2. 创建继承泛型APIView而不是CreateView的类
  3. 在该类中创建一个类似def post(self, request):的POST方法,并使用request.datarequest.POST获取在请求负载中创建Projeto对象的所有详细信息
  4. 使用request.user获取登录用户
  5. 创建一个Projecto对象,将所有这些信息作为Projeto.objects.create(**your_other_fields, user=request.user)
  6. 下次过滤对象时,在user字段上使用类似user=request.user的过滤器

user = models.ForeignKey(User, on_delete=models.CASCADE)

到Projecto模型。然后,在视图中,在保存项目模型之前设置project.user = self.request.user

相关问题 更多 >