Проблема сохранения данных словаря в модель django, сообщение об ошибке = AttributeError("'dict' object has no attribute '_meta'").

У меня проблема с сохранением данных словаря в модель django.

Нужно ли мне где-то вводить sqlite3 запрос?

Пожалуйста, научите меня, как я могу решить эту проблему.

получены данные словаря

{"id":20,"title":"random data","temp":43.70915909663141,"humidity":10.40750545208753,"created_date":"2021-12-15T16:25:12.946427","author":1}

Сообщение об ошибке

{"id":20,"title":"random data","temp":43.70915909663141,"humidity":10.40750545208753,"created_date":"2021-12-15T16:25:12.946427","author":1} Unexpected e=AttributeError("'dict' object has no attribute '_meta'"), type(e)=<class 'AttributeError'>

modles.py

class Data(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    temp = models.FloatField(default=0.0)
    humidity = models.FloatField(default=0.0)
    created_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

class DataSerializer(serializers.ModelSerializer):
    id = serializers.IntegerField(write_only=False)

    class Meta:
        model = Data
        fields = '__all__'

snd_clienet.py

     data = Data(
                    id = 20,
                    author = User.objects.get(username='labovming'),
                    title = 'random data',
                    temp = random.random()*300,
                    humidity = random.random()*12,
                    created_date = timezone.now()
                )

                serializer = DataSerializer(data)
                msg = JSONRenderer().render(serializer.data)

rcv_server.py

while msg:  
    stream = io.BytesIO(msg)
    data = JSONParser().parse(stream)
    serializer = DataSerializer(data=data) # create new instance
    serializer = DataSerializer(data, data=data) # update 'data'
    # serializer = CommentSerializer(comment, data={'content': u'foo bar'}, partial=True)  # Update `comment` with partial data
    serializer.is_valid()  **<<< Validation fail ** 
    serializer.errors      
    serializer.validated_data  **<<< Empty ** 

    try: 
        serializer.save()  **<<< Error occur here ** 
        print(f'data added : {serializer}')
        if self.DBman.messageHandler(Name, msg.decode()) == -1: 
            self.request.close() 
            break 
        msg = self.request.recv(1024) 

    except Exception as e: 
        print(f"Unexpected {e=}, {type(e)=}") 
        break
Вернуться на верх