出现错误:User 类型的对象在 django python 中不可 JSON 序列化

2024-04-26

我是 django python 的新手,当我尝试从 3 个表获取数据时,出现错误Object of type User is not JSON serializable,任何人都可以帮我解释为什么我会收到此错误吗?在这里我添加了我的views.py and models.py file

views.py

# views.py
from tokenize import Token

from django.contrib.auth import authenticate
from rest_framework import status
from rest_framework.exceptions import ValidationError
from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_200_OK
from rest_framework.views import APIView
from rest_framework.response import Response
from django.conf import settings
from rest_framework.permissions import AllowAny
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.core.exceptions import ValidationError
from django.core.validators import validate_email
from . import utils
import jwt
import json

from trialrisk.models import UserProfile, Company, InviteUser


class UserProfile(APIView):

    def post(self, request):
        try:
                data = request.data
                user_id = data['user_id']

                user_data = User.objects.all().select_related('user_profile').select_related('company')

                return Response({"success": True, "status": "Success", "data": user_data},
                                status=status.HTTP_201_CREATED)

        except Exception as exp:
            print("Unexpected exception occurred: " + str(exp))
            return Response({"success": False, "error": "Unexpected error occurred, please report this to Admin"},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)

模型.py

class UserProfile(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="user_profile")
    usertype = models.SmallIntegerField()
    title = models.CharField(max_length=255, null=True)
    dob = models.CharField(max_length=255, null=True)
    address = models.CharField(max_length=255, null=True)
    country = models.CharField(max_length=255, null=True)
    city = models.CharField(max_length=255, null=True)
    zip = models.CharField(max_length=255, null=True)
    photo = models.CharField(max_length=255, null=True)

    def __str__(self):
        return "{} - {}".format(self.title, self.dob, self.address, self.country, self.city, self.zip, self.photo,
                                self.user,self.usertype)

class Company(models.Model) :

    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="company")
    name = models.CharField(max_length=255, null=True)
    address = models.CharField(max_length=255, null=True)
    zip = models.CharField(max_length=255, null=True)
    phone = models.CharField(max_length=255, null=True)

    def __str__(self):
        return "{} - {}".format(self.name, self.address,self.phone, self.zip)

class InviteUser(models.Model):

    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="invite_user")
    email = models.CharField(max_length=255,null=False)

    def __set__(self):
        return "{} - {}".format(self.user, self.email)

不可能将 Django 模型对象作为数据返回。你应该使用序列化器 https://www.django-rest-framework.org/api-guide/serializers/以此目的。

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = '__all__'


class UserProfileAPIView(APIView):
    serializer_class = UserProfileSerializer
    def post(self, request):
        user = request.user
        user_profile = UserProfile.objects.get(user=user)
        serializer= self.serializer_class(user_profile)
        return Response({"success": True, "status": "Success", "data": serializer.data}, status=status.HTTP_201_CREATED)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

出现错误:User 类型的对象在 django python 中不可 JSON 序列化 的相关文章

随机推荐

  • 删除两个列表之间的公共元素[重复]

    这个问题在这里已经有答案了 可能的重复 Python列表减法运算 https stackoverflow com questions 3428536 python list subtraction operation 我想删除两个列表之间的
  • 浏览器不渲染 WOFF 字体 (@font-face)

    好的 我有一个无法解决的问题 我正在尝试研究 WOFF 字体在 Internet Explorer 10 中的用法 我从下载了套件字体松鼠 http www fontsquirrel com fontface 并根据包含的 CSS 和 HT
  • 嵌入来自 tiktok 的视频

    我有当前的作品 我想要的是获取视频的 URL 但它只显示未样式化的文本 async function start let url https www tiktok com tiagogreis video 68300596442332234
  • Wordpress 和 Drupal SSO/单点登录

    我已经在 Wordpress 中制作了我的前端网站 这对我来说很好 我想在 Drupal 中创建会员 员工区域 因为它具有更多 Google 文档和 Mediawiki 功能 我想知道我是否可以在两个站点之间共享登录信息 因此如果我在 Wo
  • 如何获取方法内部传递的参数的 nameof() ?

    我正在为我的项目寻找解决方案 我有一个Dictionary
  • C# Winforms 不规则的 Windows [重复]

    这个问题在这里已经有答案了 如何使用 WinForms 和 C 创建不规则形状的窗口 有几种不同的方法可以实现这一目标 一是用用TransparencyKey 正如尼夫勒在帖子中指出的那样 另一种是分配一个Region http msdn
  • 将 SQLite 与 Blazor WASM 结合使用有什么好处?

    我正在看这个Steve Sanderson 的视频演示了如何将 SQLite 与 Blazor Web Assembly 结合使用 https www youtube com watch v kesUNeBZ1Os我正在考虑在我的一个项目中
  • Javascript作用域变量可以切换大小写吗?

    在 C 中 您可以将变量的范围限定为 switch case 例如this https stackoverflow com a 2101514 773263 使用 javascript 我使用以下命令获得意外的令牌 const i 1 sw
  • Ruby 使用 JSON 序列化结构

    我正在尝试将一个简单的结构序列化为 JSON 它工作正常 但我无法让它从 JSON 创建该结构的实例 我正在尝试这样做 require rubygems require json Person Struct new name age jso
  • python print() 函数实际上是做什么的?

    我正在看这个question https stackoverflow com questions 1979171 how can i escape xff xfe to a readable string并开始想知道什么是print实际上确
  • java中.this和.class的含义

    假设我们有一个类名称 Home 有什么区别主页 this and 家庭班 它们指的是什么 主页 this Home this指的是当前实例Home class 该表达式的正式术语似乎是合格了这个 http java sun com docs
  • 如果ViewData有ViewBag,为什么TempData没有TempBag?

    为什么 TempData 没有像 ViewData 那样的动态字典对象 之所以没有 是因为没有人费心去实施它 但这是很容易做到的 例如 作为扩展方法 不幸的是 NET 尚不支持扩展属性 因此您无法完全获得您可能希望的语法 public cl
  • 重新格式化双向条形图以匹配示例

    我生成了这个条形图 使用此代码 s level margins fluid margins vp Volume 0 0 1L 0 718 0 690 2L 0 501 0 808 5L 0 181 0 920 MAP 0 0 64 0 43
  • C 中每个块复制一个文件块

    我试图将文件分成 x 个大小为 y 以字节为单位 的块 以便我可以单独复制每个块 我怎样才能做到这一点 尝试使用fread http www manpagez com man 3 fread char buffer ysize fread
  • 使用数据表中的“selectAll”按钮搜索后选择所有可见行

    我已经初始化了一个具有 id 的数据表example像这样 var table example DataTable aaSorting 4 asc select true dom Bfrtip buttons excelHtml5 exte
  • 当更新可用时,手动安装的 apk(不是从 Play 商店)会收到通知吗?

    我想在平板电脑上安装 apk 知道怎么做 我的平板电脑会收到来自 Play 商店的通知吗 该更新已在 Play 商店中准备就绪 我应该安装它吗 仅当满足以下两个条件时 您才会收到更新 在 Google Play 已安装的应用程序 选项卡中看
  • Flash 影片的 Div Z-Index 问题

    我有两个简单的 HTML div 一个包含 flash 电影 另一个 div 包含简单文本 现在我的问题是我必须将文本 div 放到 flash 电影 div 上 我正在做的是将两个 div 的位置设置为 CSS 中的 Absolute 并
  • 如何为 SonarQube 扫描配置 Jenkins 管道

    我正在尝试为我的项目配置詹金斯管道 但这里缺少一些东西 如果有人可以指出我做错了什么 下面是管道脚本 node stage SonarQube analysis requires SonarQube Scanner 2 8 def scan
  • 协议缓冲区和 UTF-8

    编码方案 多操作系统和 Endian nes 的历史导致了对所有形式的字符串数据 即所有字母表 进行编码方面的混乱 因此 协议缓冲区仅处理其字符串类型中的 ASCII 或 UTF 8 并且我看不到任何接受 C wstring 的多态重载 那
  • 出现错误:User 类型的对象在 django python 中不可 JSON 序列化

    我是 django python 的新手 当我尝试从 3 个表获取数据时 出现错误Object of type User is not JSON serializable 任何人都可以帮我解释为什么我会收到此错误吗 在这里我添加了我的vie