Общие виды Django с несколькими параметрами - PullRequest
2 голосов
/ 02 февраля 2010

Можно ли использовать универсальное представление с дополнительными параметрами в отображении URL - т.е. я получил следующую модель:

class Route(models.Model):
    area = models.ForeignKey(Area)
    slug = models.SlugField(null=True,blank=True)

    @models.permalink
    def get_absolute_url(self):
        return ('route_details', (), {'area': self.area.slug, 
                                      'slug': self.slug})

Это отображение URL:

url(r'^(?P<area>[-\w]+)/(?P<slug>[-\w]+)/$','routes.views.route_details',
    name='route_details')

И это тривиальное представление:

def route_details(self, area, slug):
    route = get_object_or_404(Route, slug=slug)
    return render_to_response("routes/route_details.html", {'route': route})

Как вы можете видеть, я на самом деле определяю маршрут только по фрагменту маршрута, а фрагмент области - просто по форме URL (например, routes/central-park/rat-rock). Могу ли я сделать то же самое, просто используя общий вид?

1 Ответ

0 голосов
/ 02 февраля 2010

Конечно, как-то так:

url(r'^(?P<area>[-\w]+)/(?P<slug>[-\w]+)/$',
    'django.views.generic.list_detail.object_detail',
    {'queryset': Route.objects.all()}
    name='route_details')

Должно просто работать.

Обязательно установите для template_object_name значение «route» или используйте «object» в шаблоне.

...