Django: Невозможно сохранить экземпляр модели

У меня есть модели, определенные следующим образом:

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()

Выдает ошибку Invalid UUID format. Это работает, если я устанавливаю 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)

Это позволит создать и сохранить объект за один шаг.

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