Django:无法保存模型实例
Django: Unable to save the model instance
我有如下定义的模型:
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()
我正在尝试保存如下模型:
device = Device.objects.get(pk=device_id)
r = DeviceReadings(device_id=device, reading=reading, timestamp=timestamp)
r.save()
报错无效的UUID格式。如果我设置 device.pk
.
它会起作用
我对Django不是很了解,无法理解为什么没有保存实例。
您已将 device_id 作为设备实例,它应该是 id 或 pk 而不是实例。可以使用以下任何一种
device = Device.objects.get(pk=device_id)
r = DeviceReadings(device=device, reading=reading, timestamp=timestamp)
r.save()
或
device = Device.objects.get(pk=device_id)
r = DeviceReadings(device_id=device.id, reading=reading, timestamp=timestamp)
r.save()
试试这个:
device = Device.objects.get(pk=device_id)
DeviceReadings.objects.create(device=device.id, reading=reading, timestamp=timestamp)
这将一步创建和保存对象。
我有如下定义的模型:
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()
我正在尝试保存如下模型:
device = Device.objects.get(pk=device_id)
r = DeviceReadings(device_id=device, reading=reading, timestamp=timestamp)
r.save()
报错无效的UUID格式。如果我设置 device.pk
.
我对Django不是很了解,无法理解为什么没有保存实例。
您已将 device_id 作为设备实例,它应该是 id 或 pk 而不是实例。可以使用以下任何一种
device = Device.objects.get(pk=device_id)
r = DeviceReadings(device=device, reading=reading, timestamp=timestamp)
r.save()
或
device = Device.objects.get(pk=device_id)
r = DeviceReadings(device_id=device.id, reading=reading, timestamp=timestamp)
r.save()
试试这个:
device = Device.objects.get(pk=device_id)
DeviceReadings.objects.create(device=device.id, reading=reading, timestamp=timestamp)
这将一步创建和保存对象。