2017-03-28 1 views
0

Supposons que toutes les importations ont été effectuées.ValueError mal formé chaîne UUID hexadécimale django ListView

J'ai un modèle comme celui-ci:

class Package(models.Model): 
    uuid = models.UUIDField(default=uuid.uuid4, editable=False) 
    name = models.CharField(max_length=400) 

Je veux utiliser générique ListView comme ceci:

class PackageList(ListView): 
    model = Package 
    template_name = 'package/list.html' 

Tous avec l'URL comme ceci:

url(r'^package/list/$', views.PackageList.as_view(), name='package_list'), 

Quand je visitez le localhost:8000, je reçois ValueError at /package/list/ badly formed hexadecimal UUID string

Toutefois, une vue générique DetailView charge le détail basé sur le uuid avec succès, sans aucun problème.

L'erreur ne se produit que lors de l'utilisation du ListView.

Qu'est-ce que je fais mal?

+0

La première chose d'abord, votre url dit '/ paquet/liste /', mais dans votre question que vous avez mentionné '/voyage/liste/'. Etes-vous sûr que vous allez à l'URL correcte? – kaveh

+0

@kaveh Les a corrigés maintenant. Est-ce que la faute de frappe était en cause? – Rexford

+0

Est-ce lié à votre cas? http://stackoverflow.com/questions/32445546/django-uuidfield-modelfield-causes-error-in-django-admin-badly-formed-hexadecim – kaveh

Répondre

0

Figuré.

La séquence url était le coupable. séquence Ayant ainsi fixé il:

url(r'^travel/add/$', views.TravelAdd.as_view(), name='travel_add'), 
url(r'^travel/list/$', views.TravelList.as_view(), name='travel_list'), 
url(r'^travel/(?P<uuid>[\w-]+)/$', views.TravelDetail.as_view(), name='travel_detail'), 

Auparavant, il était le suivant:

url(r'^travel/add/$', views.TravelAdd.as_view(), name='travel_add'), 
url(r'^travel/(?P<uuid>[\w-]+)/$', views.TravelDetail.as_view(), name='travel_detail'), 
url(r'^travel/list/$', views.TravelList.as_view(), name='travel_list'), 
+1

À droite, 'list' correspond à cette expression rationnelle. Vous pourriez être plus strict avec quelque chose comme '(? P [a-f0-9] {8} - [a-f0-9] {4} -...)/$' si vous voulez éviter de vous inquiéter à ce sujet dans l'avenir. –