Замените содержимое поля UUID на нулевое по умолчанию
Используя Django==2.2.27, и Postgres
У меня есть Модель, с полем UUID:
from django.db import models
class MyModel(models.Model):
uuid_field = models.UUIDField(
blank=True,
db_index=True,
null=True,
)
Мне нужно удалить содержимое поля (столбца) для некоторых объектов (строк) - но когда я пытаюсь:
my_object.uuid_field = None
my_object.save()
Я получаю эту ошибку:
ValidationError: ["'None' is not a valid UUID."]
^ Это имеет смысл, так как значение определенно не является UUID: link
Немного больше объяснений:
- I can create objects without populating the
uuid_fieldso it stays null - I will most likely populate the
uuid_field - I might need to delete the
uuid_fieldcontent - I cannot change the
UUIDFieldto a char field or anything else
Есть ли способ вернуть поле к его стандартному null с помощью Django ORM?
Спасибо!
Имеющееся у меня решение не Django ORM выглядит следующим образом:
from django.db import connection
with connection.cursor() as cursor:
cursor.execute("UPDATE mymodelapp_mymodel SET uuid_field = null WHERE id = %s", [<MyModel id, int>])
Я бы хотел получить ORM-решение.
Одна вещь, которую я могу сделать, это переопределить models.UUIDField и настроить его так, чтобы он вел себя так, как я ожидаю - но я открыт для других идей