Проблема сохранения данных словаря в модель 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