UUID('...') n'est pas la sérialisation JSON
J'obtiens cette erreur quand j'essaie de passer le UUID de l'attribut de paramètre d'url.
urlpatterns = [
url(r'^historia-clinica/(?P<uuid>[W\d\-]+)/$', ClinicHistoryDetail.as_view(), name='...'),
]
views.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)
...
Des suggestions?
Il serait mieux si vous pouviez nous montrer comment vous êtes passé, et ce
ClinicHistoryDetail
est en train de faire.OriginalL'auteur DJeanCar | 2016-04-13
Vous devez vous connecter pour publier un commentaire.
Il y a un bug billet sur Django sur cette question, cependant une coutume dite "complexe encoder" par python docs peuvent vous aider.
Maintenant, si nous avons fait quelque chose comme ceci
Votre uuid champ doit être codé.
json.dumps(my_object.__dict__, cls=UUIDEncoder)
travaillen'est-il pas un moyen d'obtenir une chaîne de caractères uuid, appeler toString sur elle ou quoi?
OriginalL'auteur Murat Sert
Pour l'utilisation de l'UUID dans une URL comme ça, vous devriez passer comme une chaîne de caractères:
FYI - il ressemble à WIMs réponse est un peu plus approfondie. Votre regex doit certainement être resserré. Si vous vous retrouvez à l'aide de la représentation de chaîne de la limace, vous aurez envie d'une regex comme ceci:
[A-Za-z0-9\-]+
qui permet pour les caractères alphanumériques et des tirets.str(object.id)
oustr(object.id.hex)
Alors assurez-vous que votre expression régulière correspondant à l'option que vous choisissez. Si c'est de l'hexadécimal, utilisez[0-9a-f]{32}
. Sinon, utilisez[A-Za-z0-9\-]+
OriginalL'auteur Jordan Haines