2016-03-31 19 views
0

Ich habe zwei Modelle - eins für Werkzeuge und eins für Teile. Die Listenseite ist identisch. Kann ich filtern, was in der Vorlage basierend auf der URL angezeigt wird?Filter Django Queryset basierend auf URL Parameter

Ansichten(Ich möchte TOOL_LIST kombinieren und part_list in product_list)

def tool_list(request): 
    tools = Tool.objects.all() 
    parts = Part.objects.all() 
    return render(request, 'tool_list.html', {'tools': tools, 'parts': parts}) 


def part_list(request): 
    parts = Part.objects.all() 
    tools = Tool.objects.all() 
    return render(request, 'tool_list.html', {'parts': parts, 'tools': tools}) 


def product_detail(request, **kwargs): 
    tool = get_object_or_404(Tool, slug=kwargs.get('slug')) 
    part = get_object_or_404(Part) 
    return render(request, 'product_detail.html', {'tool': tool, 'part': part}) 

url

urlpatterns = [ 
    url(r'^products/tools/$', tool_list, name='tool_list'), 
    url(r'^products/parts-supplies/$', part_list, name='part_list'), 
    url(r'^products/(?P<category>[^\.]+)/(?P<slug>[^\.]+)/$', product_detail, name='product_detail'), 
] 
+0

Wollen Sie zwei verschiedene URLs für eine einzelne Ansicht? – v1k45

+0

Ja, ich möchte 'Produkte/Werkzeuge ...' und 'Produkte/Teile-Zubehör ...' aber die gleiche Ansichtsvorlage verwenden. Und in der 'URL' wäre das Abfrage-Set entweder Werkzeuge oder Teile. Jetzt, wo ich darüber nachdenke, könnte ich dazu nur bedingte Anweisungen in meine Vorlage schreiben, um nach URLs zu suchen. –

Antwort

1

Ihre zwei Ansichten, tool_list und part_list sind exakte Kopien von gegenseitig. Sie können eine einzelne Ansicht erstellen und mehrere URLs dorthin leiten. Gefällt Ihnen dieses

def product_list(request): 
    tools = Tool.objects.all() 
    parts = Part.objects.all() 
    return render(request, 'tool_list.html', {'tools': tools, 'parts': parts}) 

In Ihrem Urls:

url(r'^products/tools/$', product_list, name='tool_list'), 
url(r'^products/parts-supplies/$', product_list, name='part_list'), 
Verwandte Themen