Объект типа Email не является JSON сериализуемым, Как создать или обновить объект модели Django
Я пытаюсь создать объект из моей модели Email, если 'user_email', который является user_email = models.CharField(primary_key=True, max_length=200)
уже существует, просто обновите его, если он не существует, создайте новый, я покажу вам, как я создаю мой новый объект.
Я получаю следующую ошибку:
TypeError: Object of type Email is not JSON serializable
Мой экстракт 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)
Моя выдержка из 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)
Я создаю объект NewEmail, который является экземпляром для модели Email, затем я хочу сделать NewEmail.save() и вернуть Response(NewEmail) для DRF, чтобы вернуть JSON созданного или обновленного объекта.
Экземпляр (NewEmail) не может быть передан в Response напрямую. Сначала необходимо сохранить этот экземпляр, т.е. NewEmail.save(), а затем передать его в сериализатор EmailSerializer. А затем передать этот сериализованный ответ в Response.