Django: перенаправление на объект генерирует странный URL
Я следую за первым примером из документации Django для django.shortcuts.redirect. Когда я вызываю перенаправление на мой объект, он перенаправляет на URL <bound method Event.get_absolute_url of <Event: Blah 2014>>
в действительности это должен вызывать этот метод get_absolute_url и перенаправлять на URL, возвращаемый функцией. На самом деле вызов myevent.get_absolute_url() правильно возвращает '/1/right-slug', но перенаправление, которое должно вызывать только эту функцию, работает неправильно.
Для справки ниже приведены фрагменты модели, вида и URLConf.
models.py:
class Event(models.Model):
name = models.CharField(max_length=255)
start_date = models.DateField()
@property
def slug(self):
return slugify(str(self))
def get_absolute_url(self):
return reverse('event-with-slug', kwargs={'event_id': self.id, 'slug': self.slug})
views.py:
def event_offers(request, event_id="1", slug=""):
event = get_object_or_404(Event, id=event_id)
if event.slug != slug:
return redirect(event, permanent=True)
urls.py:
url(r'^event/(?P<event_id>\d+)/$', view=views.event_offers, name='event-without-slug'),
url(r'^event/(?P<event_id>\d+)/(?P<slug>[-\w\d]+)/$', view=views.event_offers,
name='event-with-slug'),
Запрос: www.example.com/1/wrong-slug
Ожидаемое перенаправление на: wwww.example.com/1/right-slug
Фактическое перенаправление на: www.example.com/1/wrong-slug/>