python - psycopg2.errors.InvalidTextRepresentation:格式错误的数组文字...详细信息:意外的数组元素
问题描述
我是 python django 的新手。我尝试创建一个多选测试网站。我是越南人,所以我的问题是越南语。
当我尝试将对象 Answers 插入数据库时遇到问题。
我的错误:
django.db.utils.DataError: malformed array literal: "{"A": "C\u01a1m", "B": "ch\u00e1o"}"
LINE 1: ...answer", "level") VALUES ('Hôm nay ăn gì', '', 1, '{"A": "C\...
^
DETAIL: Unexpected array element.
我的POST
要求:
{
"title": "Hôm năy ăn gì",
"category": 3,
"choices": {
"A": "Cơm",
"B": "cháo"
},
"answer": "A"
}
这是我的代码models.py
:
from django.db import models
from django.contrib.postgres.fields import ArrayField
# Create your models here.
class Category(models.Model):
title = models.TextField(null=False, blank=False)
description = models.TextField(null=False, blank=False)
class Question(models.Model):
title = models.TextField(null=False, blank=False)
description = models.TextField(null=False, blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
# choices = ArrayField(ArrayField(models.TextField(blank=True)))
choices = models.JSONField(null=False, blank=False)
answer = models.TextField(null=False,blank=False)
level = models.IntegerField(null=True, blank=True)
在views.py
:
from django.db.models import query
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework import generics
from rest_framework import viewsets
from app.models import User, Category, Question
from app.serializers import UserSerializer, QuestionSerializer, CategorySerializer
from django.shortcuts import get_object_or_404
# Create your views here.
class CategoryViewSet(viewsets.ModelViewSet):
serializer_class = CategorySerializer
queryset = Category.objects.all()
class QuestionViewSet(viewsets.ModelViewSet):
serializer_class = QuestionSerializer
queryset = Question.objects.all()
在serializers.py
:
from django.contrib.postgres import fields
from rest_framework import serializers
from app.models import User, Question, Category
class CategorySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Category
fields = ['id', 'title', 'description']
class QuestionSerializer(serializers.ModelSerializer):
# category = CategorySerializer(read_only=False)
class Meta:
model = Question
fields = ['id', 'description', 'category', 'choices', 'answer', 'level']
我将越南 JSON 对象插入数据库的任何解决方案。或者我可以使用 ArrayField 代替 JSONField 吗?如果是的话,你能给我举个例子吗?
非常感谢。
解决方案
尝试这个
from django.contrib.postgres.fields import JSONField
class Question(models.Model):
choices = JSONField()
推荐阅读
- android - 如何在一个月后自动删除 SharedPreferences?
- phpmailer - PHPMailer 似乎没有正确安装:未捕获的错误:类 'PHPMailer\PHPMailer\PHPMailer
- kubernetes-helm - 我们可以在分蘖而不是掌舵客户端中进行图表安装吗?
- amazon-web-services - 如何知道我的实例是否会在 ec2 中终止?
- android - 如何修复 android studio 3 中的“找不到符号类 Nullable”错误
- stripe-payments - Stripe:有没有一种元素可以免费创造客户?
- javascript - 在 Spark AR studio 中获取像素屏幕尺寸(适用于 Facebook)
- xml - 如何从 xml 文件构建 xsd?
- azure-application-insights - 启动 Application Insights Agent for Java 时出错
- python - 适用于 Apache Flink 的 Python API 上的 Kafka 连接器