Okay, here's the relevant parts of urls.py: announcement_dict = { 'queryset': Announcement.objects.all(), 'date_field': 'posted_on', } urlpatterns = patterns('django.views.generic.date_based', (r'^(?P\d{4})/(?P\d{1,2})/(?P\d{1,2})/(?P[\w-]+)/$', 'object_detail', dict(announcement_dict, slug_field='slug')), (r'^(?P\d{4})/(?P\d{1.2})/(?P\d{1,2})/$', 'archive_day', announcement_dict), (r'^(?P\d{4})/(?P\d{1,2})/$', 'archive_month', announcement_dict), (r'^(?P\d{4})/$', 'archive_year', announcement_dict), (r'^/?$', 'archive_index', announcement_dict), ) This is the get_absolute_url function in the model: def get_absolute_url(self): return "/announcements/%s/%s/%s/%s/" % (self.posted_on.year, self.posted_on.month, self.posted_on.day, self.slug) This is the URL I'm trying to go to: http://127.0.0.1:8000/announcements/2006/8/8/someones-diary/ EDITED:: urlpatterns = patterns('django.views.generic.date_based', (r'^(?P\d{4})/(?P\d{1,2})/(?P\d{1,2})/(?P[-\w]+)/$', 'object_detail', dict(announcement_dict, month_format='%m', day_format='%d', slug_field='slug')), (r'^(?P\d{4})/(?P\d{1.2})/(?P\d{1,2})/$', 'archive_day', dict(announcement_dict, month_format='%m', day_format='%d')), (r'^(?P\d{4})/(?P\d{1,2})/$', 'archive_month', dict(announcement_dict, month_format='%m')), (r'^(?P\d{4})/$', 'archive_year', announcement_dict), (r'^/?$', 'archive_index', announcement_dict), )