Почему данные, передаваемые в сериализатор, сохраняются в базе данных как null?

Я работал над проектом Django с сериализатором rest framework для получения информации, отправленной с фронтенда, ее упорядочивания и сохранения в базе данных. Информация получается путем обводки полей ввода на формах и отправки всех полей, которые вы определяете. Однако после определения DataSerializer(data=data).

как будто данные на самом деле не используются.

Пример request.data = {'TextField': [], 'DateField': [], 'SignatureField': [['FieldName', [129, 79], [138, 35], 'Form.jpg']]}

Вот мой сериализатор:

Class DataSerializer(serializers.ModelSerializer):
    class Meta:
        model = FormData
        fields = ["FieldName", "StartX", "StartY", "width", "height", "JSONData", "FormType"]
    
    def create(self, **validated_data):
        print(**validated_data)
        return FormData.objects.create(**validated_data)

Вот мой пост Просмотр

@api_view(['POST'])
def create_list(request):
    
    if request.method == 'POST':
        dataDict = request.data
        
        for info in dataDict:
            Field = dataDict[info]
            stringDict = str(dataDict) 


            for object in Field:
                
                datadict = {
                    "FieldName": object[0],
                    "StartX": object[1][0],
                    "StartY": object[1][1],
                    "width": object[2][0],
                    "height": object[2][1],
                    "JSONData": stringDict,  
                    "FormType": object[3]
                }
                  
        serializer = DataSerializer(data=datadict)
        
        if serializer.is_valid():
            serializer.create()  
            return JSONResponse(serializer.data, status=201)
        print(serializer.errors)
            
    return Response("Not Valid")

Вот моя модель, которая была модифицирована, чтобы принимать нулевые значения, чего не будет после того, как я разберусь с этим.

class FormData(models.Model):

    FieldName = models.CharField(max_length=100)
    StartX = models.IntegerField(null=True)
    StartY = models.IntegerField(null=True)
    width = models.IntegerField(null=True)
    height = models.IntegerField(null=True)
    JSONData = models.CharField(max_length=500)
    FormType = models.CharField(max_length=100)

Хотя он не способен обрабатывать более одного прямоугольника, нарисованного в качестве входных данных, я просто пытаюсь понять, как обработать request.data, организовать его и сохранить. Однако все, что я получаю, это Null или отсутствующие значения в базе данных без каких-либо ошибок, выводимых обратно.

Попытки отладки

Когда я пытался разобраться в этом, у меня было несколько идей, в чем проблема. Одна из них заключалась в логике циклов for, определяющих данные как null, но после кодирования print(serializer.data) после if serializer.is_valid() он возвращает то, что я хочу, чтобы он прочитал.

{'FieldName': 'FieldNamedefinedbyuser', 'StartX': 246, 'StartY': 108, 'width': 345, 'height': 80, 'JSONData': "{'TextField': [], 'DateField': [], 'SignatureField': [['asdfasdfsadf', [246, 108], [345, 80], 'Darthvad.jpg']]}", 'FormType': 'Form.jpg'}

Так что я не думаю, что дело в этом. Затем я подумал, что словарь данных должен быть JSON, потому что каждый другой пример create использует DataSerializer(data=request.data), но это также не сработало, потому что он вернул ошибку, говоря, что ожидает словарь, но получил код str.

Код:

Json_object = json.dumps(data, indent=4)
serializer = DataSerializer(data=Json_object)

Ошибка: {'non_field_errors': [ErrorDetail(string='Неверные данные. Ожидался словарь, а получилась строка.', code='invalid')]}

Возможно, это из-за того, как я превращаю словарь в JSON, но request.data, похоже, не является JSON, хотя я отправляю его через Fetch Api из javascript. В этом может быть проблема, но я понятия не имею.

Кроме того, печать **validated_data на терминал дает мне некоторое представление о проблеме, поскольку она полностью нулевая. Так что мой лучший гость имеет отношение к тому, как я обрабатываю данные, которые помещаются в сериализатор, вызывая некоторую проблему. Могу ли я получить какое-то направление?

Вернуться на верх