python - primary - timefield django
UUID(''...'') no es serializable JSON (2)
Hay un error de error en Django con respecto a este problema; sin embargo, una costumbre llamada ''codificador complejo'' por los documentos de Python puede ayudarlo.
import json
from uuid import UUID
class UUIDEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, UUID):
# if the obj is uuid, we simply return the value of uuid
return obj.hex
return json.JSONEncoder.default(self, obj)
Ahora si hiciéramos algo como esto
json.dumps(my_object, cls=UUIDEncoder)
Tu campo uuid debe estar codificado.
Recibo este error cuando intento pasar el atributo UUID al parámetro url.
urlpatterns = [
url(r''^historia-clinica/(?P<uuid>[W/d/-]+)/$'', ClinicHistoryDetail.as_view(), name=''...''),
]
vistas.py
class ClinicHistoryDetail(...):
...
my_object = MyModel.objects.create(...)
...
return redirect(reverse(''namespace:name'', kwargs={''uuid'' : my_object.id}))
model.py
class MyModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
...
¿Alguna sugerencia?
Para usar el UUID en una URL como esa, debes pasarlo como una cadena:
return redirect(reverse(''namespace:name'', kwargs={''uuid'' : str(object.id)}))
FYI - parece que la respuesta de WIM es un poco más completa. Su expresión regular debe ser ajustada. Si terminas usando la representación de cadena de la bala, querrás una expresión regular como esta: [A-Za-z0-9/-]+
que permite caracteres alfanuméricos y guiones.