2016-02-02 2 views
1

У меня есть следующая ошибка, когда я пытаюсь создать представление на основе класса, чтобы изменить мою модель Destino. Если это возможно, я бы обойтись без использования пули или рк в urls.pyDjango 1.7 соответствующий запрос не существует

Ошибка:

Destino matching query does not exist. 
Request Method: GET 
Request URL: http://localhost:8002/modificarVC/modificar.html 
Django Version: 1.7 
Exception Type: DoesNotExist 
Exception Value:  
Destino matching query does not exist. 
Exception Location: /usr/local/lib/python2.7/dist-packages/Django-1.7-  py2.7.egg/django/db/models/query.py in get, line 357 
Python Executable: /usr/bin/python 
Python Version: 2.7.6 
Python Path:  
['/home/juanma/Escritorio/exPWfebrero/Django/AgenciaViajes', 
'/usr/local/lib/python2.7/dist-packages/Django-1.7-py2.7.egg', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
    '/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', 
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client', 
'/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode'] 

URLS:

url(r'^modificarVC/modificar.html', modificarVC.as_view(), name='modificarDestino'), 

Просмотры:

class modificarVC(UpdateView): 
    model = Destino 
    template_name = "modificarVC/modificar.html" 
    success_url = '/' 

    def get_object(self): 
     return Destino.objects.get(pk=self.request.GET.get('pk')) 
+0

Вы передаете pk в строке запроса? 'http: // localhost: 8002/modificarVC/modificar.html? pk = 4' – LostMyGlasses

+5

Есть ли конкретная причина, по которой вы пытаетесь получить первичный ключ из строки запроса? Обычным подходом было бы включение первичного ключа в URL-адрес, например. 'url (r '^ modificarVC/(? \ d +)/modificar.html', modificarVC.as_view(), name = 'modificarDestino'),'. Тогда вам не нужно переопределять 'get_object' в вашем представлении. – Alasdair

+1

И почему вы включаете расширение '.html' в URL? –

ответ

0

Как указано в некоторые комментарии, вы сделали несколько вещей, которые противоречат силе взглядов, основанных на классе. В отношении к UpdateView, который вы используете, он ожидает рк будет принят в.

# urls.py 
url(r'^modificarVC/modificar/(?P<pk>\d+)/$', modificarVC.as_view(), name='modificarDestino') 

Когда вы нажмете URL, такие как /modificarVC/modificar/5/ UpdateView автоматически устанавливает объект, выбранный объект в модели Destino что имеет идентификатор 5.

# views.py 
class modificarVC(UpdateView): 
    model = Destino 
    template_name = "modificarVC/modificar.html" 
    success_url = '/' 
0

сообщения об ошибке намекает на проблемы - ваш запрос URL не включает в себя 'рк' параметр запроса (см 'Request URL')

Destino matching query does not exist. 
Request Method: GET 
Request URL: http://localhost:8002/modificarVC/modificar.html 

снова запустите запрос, но добавьте параметр pk в конец как параметр запроса: http://localhost:8002/modificarVC/modificar.html?pk=42