uuid4 timefield primary durationfield python django uuid

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.