Ребята, у меня простая модель книги:
class Book(models.Model):
isbn = models.CharField(_('ISBN'),
validators=[RegexValidator('^[0-9 -]+$', message="ISBN must contains only numbers or hyphens!")] ,
max_length=13, unique=True)
title = models.CharField(_('Book\'s title'), max_length=128)
publisher = models.CharField(_('Publisher'), max_length=64)
author = models.CharField(_('Author'), max_length=64)
pages = models.IntegerField(_('Pages'), default=0)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
updated_at = models.DateTimeField(auto_now=True, editable=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('books:detail', kwargs={'isbn': self.isbn})
Я кодирую систему crud и у меня возникли проблемы с UpdateView.Это представление работает правильно, когда я пытаюсь выполнить правильное обновление, но когда я вставляю неправильные значения (например, буквы в isbn или буквы на страницах), у меня появляется эта ошибка:
Reverse for 'update' with arguments '('31234-11a',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['books/update/(?P<isbn>[\\d\\-]+)/$']
EDIT : Это мое мнение:
class BookUpdateView(UpdateView):
"""Update the requested book."""
model = Book
form_class = BookForm
def get_object(self):
pk = self.kwargs.get(self.pk_url_kwarg, None)
queryset = self.get_queryset()
queryset = queryset.filter(isbn=self.kwargs['isbn'])
if not queryset.exists():
messages.error(self.request, 'This book doesnt exist!')
return get_object_or_404(Book, **self.kwargs)
return queryset.get()
def get_success_url(self):
messages.success(self.request, 'The book updated successfully!')
return reverse_lazy('books:detail', kwargs = {'isbn': self.object.isbn})
def form_invalid(self, form):
messages.error(self.request, 'The update has failed')
return self.render_to_response(self.get_context_data(form=form))
и мой URL-адрес обновления:
urlpatterns = [
url(r'^update/(?P<isbn>[\d\-]+)/$', view=views.BookUpdateView.as_view(), name='update'),
]
Мне нужно использовать Django 1.10 в этом проекте idk почему.Если кто-то может порекомендовать мне материал для чтения или ответить на вопрос, будет приятно.Спасибо