简体   繁体   English

Django:无法保存 model 实例

[英]Django: Unable to save the model instance

I have models defined like the below:我有如下定义的模型:

class Device(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=50)
    owner = models.ForeignKey(Customer, null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

class DeviceReadings(models.Model):
    device = models.ForeignKey(Device, on_delete=models.CASCADE)
    reading = models.FloatField()
    timestamp = models.DateTimeField()

And I am trying to save models like below:我正在尝试保存如下模型:

device = Device.objects.get(pk=device_id)
r = DeviceReadings(device_id=device, reading=reading, timestamp=timestamp)
    r.save()

It gives an error that Invalid UUID format .它给出了一个错误,即Invalid UUID format It works if I set device.pk .如果我设置device.pk ,它会起作用。

I am not so well-versed in Django, unable to understand why the instance is not being saved.我对 Django 不是很精通,无法理解为什么没有保存实例。

You have given device_id as device instance, it should be id or pk not the instance.您已将 device_id 作为设备实例,它应该是 id 或 pk 而不是实例。 Can use any of the following可以使用以下任何一种

device = Device.objects.get(pk=device_id)
r = DeviceReadings(device=device, reading=reading, timestamp=timestamp)
r.save()

or或者

device = Device.objects.get(pk=device_id)
r = DeviceReadings(device_id=device.id, reading=reading, timestamp=timestamp)
r.save()

Try this:尝试这个:

device = Device.objects.get(pk=device_id)
DeviceReadings.objects.create(device=device.id, reading=reading, timestamp=timestamp)

This will create and save object in one step.这将一步创建并保存 object。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM