简体   繁体   English

Object of type Email is not JSON serializable, How to create or update Django model object

[英]Object of type Email is not JSON serializable, How to create or update Django model object

I'm trying to build an object from my Email model, if the 'user_email' which is a user_email = models.CharField(primary_key=True, max_length=200) already exists just update it, if it doesn't exist create a new one I show you how I create my new object. I'm trying to build an object from my Email model, if the 'user_email' which is a user_email = models.CharField(primary_key=True, max_length=200) already exists just update it, if it doesn't exist create a new我向您展示了如何创建我的新 object。

I get the following error:我收到以下错误:

TypeError: Object of type Email is not JSON serializable

My models.py extract:我的 models.py 提取:

class Email(models.Model):
    user_email = models.CharField(primary_key=True, max_length=200)
    user_phone_number = models.IntegerField()
    user_device_id = models.CharField(max_length=200)#request.META.get('HTTP_DEVICE', '')
    lat = models.DecimalField(max_digits=22, decimal_places=16, blank=True, null=True)
    lng = models.DecimalField(max_digits=22, decimal_places=16, blank=True, null=True)
    user_address = models.CharField(max_length=200)
    creation_date = models.DateTimeField(default=None)
    email_status = models.BooleanField(default=False)
    email_score = models.IntegerField()
    valid_email = models.BooleanField(default=False)
    fraud = models.BooleanField(default=False)

My views.py extract: class UserListView(APIView): serializer_class = EmailSerializer queryset = Email.objects.all() pagination_class = StandardResultsSetPagination我的views.py 提取:class UserListView(APIView):serializer_class = EmailSerializer queryset = Email.objects.all() pagination_class = StandardResultsSetPagination

    def get_serializer_class(self):
        if self.action == 'list':
            return EmailListSerializer
        return EmailSerializer
    
    def post(self, request, *args, **kwargs):
        parametros = request.POST
        email='email=' + request._full_data['user_email']
        response = UserConnector(email).get_user_data()
        obgs = response[1]['results']
        if len(obgs) == 0:
            user_email = self.request.POST.get('user_email')
            email_stat = ''
            email_scor = ''
            email_valid = ''
            frau = ''
        else:
            obg = response[1]['results'][0]

            user_email = self.request.POST.get('user_email')
            email_stat = obg.get('email_status')
            email_scor = obg.get('email_score')
            email_valid = obg.get('valid_email')
            frau = obg.get('fraud')

        NewEmail = Email(
            user_email = user_email,
            user_phone_number = self.request.POST.get('user_phone_number'),
            user_device_id = request.META.get('HTTP_DEVICE', ''),
            lat = self.request.POST.get('lat'),
            lng = self.request.POST.get('lng'),
            user_address = self.request.POST.get('user_address'),
            creation_date = timezone.now,
            email_status = email_stat,
            email_score = email_scor,
            valid_email = email_valid,
            fraud = frau
        )
        return Response(NewEmail)

I create the NewEmail Object which is an instance for the Email model, then I want to do NewEmail.save() and return Response(NewEmail) for DRF to return the JSON of the created or updated object. I create the NewEmail Object which is an instance for the Email model, then I want to do NewEmail.save() and return Response(NewEmail) for DRF to return the JSON of the created or updated object.

Instance (NewEmail) cannot be passed in the Response directly. Instance (NewEmail) 不能直接在 Response 中传递。 You first need to save that instance ie NewEmail.save() and then pass that instance to your EmailSerializer serializer.您首先需要保存该实例,即 NewEmail.save(),然后将该实例传递给您的 EmailSerializer 序列化程序。 And then pass that serialized response in Response.然后在 Response 中传递该序列化响应。

NewEmail.save()新电子邮件.save()

serializer = EmailSerializer(NewEmail)序列化程序 = EmailSerializer(NewEmail)

return Response(serializer.data)返回响应(serializer.data)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django-Decimal类型的对象不可JSON序列化,并在视图中转换为模型数据 - Django - Object of type Decimal is not JSON serializable and convert to model data in views QuerySet 类型的 Object 不是 JSON 可序列化 Django Z0ECD11C1D7A287401FZD148A - Object of type QuerySet is not JSON serializable Django JSON “TYPE”类型的对象不是JSON可序列化的Django - Object of type 'TYPE' is not JSON serializable Django TypeError:“类别”(模型)类型的对象不是JSON可序列化的 - TypeError: Object of type 'Category'(model) is not JSON serializable “ Mycart”类型的对象在Django中无法JSON序列化 - Object of type 'Mycart' is not JSON serializable in Django Django:类型为'datetime'的对象不可JSON序列化 - Django: Object of type 'datetime' is not JSON serializable 类型错误:十进制类型的 Object 不是 JSON 可序列化 | Django - TypeError: Object of type Decimal is not JSON serializable | Django Django - User 类型的 Object 不是 JSON 可序列化的 - Django - Object of type User is not JSON serializable 类型数据的对象不是 Django 中的 JSON 可序列化错误 - Object of type data is not JSON serializable error in Django Django:“类型为'QuerySet'的对象不可JSON序列化” - Django: “Object of type 'QuerySet' is not JSON serializable”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM