【问题标题】:Pulling data associated with user account in Django在 Django 中提取与用户帐户关联的数据
【发布时间】:2021-07-25 05:25:28
【问题描述】:

我正在使用以下语法在 Django 中创建模型。该模型具有注册用户的外键。但是,我想序列化这个模型,它将返回一个仅与登录用户关联的 Json 文件。你能给出你的建议吗?或者是否有其他方法可以使用不同的方法从模型中提取信息?

    class Education(models.Model):
          user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
          school = models.CharField(max_length=50)
          year = models.CharField(max_length=10)

示例照片

例如,它只会显示与帐户关联的第一个字段

【问题讨论】:

    标签: django api rest web model


    【解决方案1】:

    要过滤与用户相关的对象,只需获取用户并根据用户应用过滤器。

    user_education_queryset = Education.objects.filter(user=user)

    如果您在请求上下文中用户对象可用的视图中执行此操作,您可以简单地执行user=request.user 注意:用户必须登录,否则这将返回匿名用户对象,该对象将无法查询数据库。

    总结: 使用获取的用户对象,获取用户对象,并通过教育模型中的用户字段进行过滤。 mike = User.objects.get(id=1) # or mike = User.objects.get(username='mike') 然后 mike_education_query = Education.objects.filter(user=mike)

    【讨论】:

    • 这真的很有帮助!我可以按用户查询结果。
    【解决方案2】:

    由于这些建议,我能够使用以下代码查询每个用户的结果:

    class EducationViewSet(viewsets.ModelViewSet):
        serializer_class = EducationSerializer
        def get_queryset(self):
            user = self.request.user
            account = User.objects.get(id=user.id)
            return Education.objects.filter(user=account)
    

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多