Ich bin 2 Monate in Python-Django und ich habe nicht die volle Erfahrung, um mit meinem was ich machen möchte weitermachen.Erstellen Django Filter in einem Bootstrap Dropdown auf der Grundlage der django-admin erstellt Kategorien
Ich mag ein Filter oder ein Dropdown-Filter erstellen, dass jemand aus der for-Schleife gemacht Kategorien in der Dropdown- nach Kategorien zu filtern oder suchen Sie wählen können. Ich schaffte es eine vollständige Suche mit Haystack mit Wusch zu erstellen (Sie können meine Heuhaufen suchen here und suchen Sie testen mit Kategorie Marketing genannt)
Kann jemand mehr Licht auf, wie ich meine Liste filtern basierend auf Kategorien in einer Schleife Dropdown-Liste? Bin wirklich verwirrt.
Hier ist der Code meiner Arbeit Heuhaufen suchen
search_indexes.py
import datetime
from haystack import indexes
from haystack.query import EmptySearchQuerySet
from .models import Mentor
from .models import *
class MentorIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
author1 = indexes.EdgeNgramField(model_attr='first_name')
author2 = indexes.EdgeNgramField(model_attr='last_name')
author3 = indexes.EdgeNgramField(model_attr='category')
author4 = indexes.EdgeNgramField(model_attr='email')
author5 = indexes.EdgeNgramField(model_attr='location')
def get_model(self):
return Mentor
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all()
home.html
<form method="get" action="/search/" class="navbar-form">
<div class="form-group" style="display:inline;">
<div class="input-group" style="display:table;">
<input class="form-control" name="q" placeholder="Search Mentors Here. You can search by Location, Email, Name, e.t.c." autocomplete="off" autofocus="autofocus" type="text">
<span class="input-group-btn" style="width:1%;">
<button class="btn btn-danger" type="submit">
<span class=" glyphicon glyphicon-search"></span>
</button>
</span>
</div>
</div>
</form>
App-URL Config (url.py)
from django.conf.urls import include, url
from mentoring_application.views import profile
urlpatterns = [
url(r'^profile/(?P<pk>\d+)/$', profile, {}, name='mentor-profile'),
]
Projekt url Config (url.py)
from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static
from django.contrib import admin
from mentoring_application.views import HomeView, profile
admin.autodiscover()
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', HomeView.as_view()),
url(r'^mentor/', include('mentoring_application.urls', namespace='mentor')),
url(r'^search/', include('haystack.urls'))
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
views.py
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from django.views import View
from .models import *
from .models import Mentor
from django.shortcuts import render, get_object_or_404
# Create your views here.
class HomeView(View):
# @staticmethod
def get(self, request, *args, **kwargs):
mentors = Mentor.objects.all()
return render(request, "mentoring_application/home.html", {"mentors": mentors})
def profile(request, pk, template='mentoring_application/profile.html'):
mentor = get_object_or_404(Mentor, pk=pk) # pk is primary key, so url will be site.com/profile/3
context = {'mentor': mentor}
return render(request, template, context)
Für mehr Klarheit, Dieses Bild zeigt einen Kategoriefilter Mache ich gerne.
Was ist die Ansichtsmethode, die die Vorlagedaten sendet? Kannst du das posten? –
@TimS. Ich bin mir nicht sicher, ob ich deine Frage verstehe, aber ich habe ein Update wie gewünscht gemacht. Allerdings möchte ich einen Filter nach Kategorie erstellen. –
Normalerweise funktioniert Ihre Ansicht so, dass das Objekt basierend auf Ihren Filterkriterien erstellt wird. Anschließend wird das gefilterte Objekt/das abgefragte Objekt an die Vorlage gesendet, die als Dropdown-Liste gerendert werden soll. Ich habe dies vorher nicht speziell gemacht, aber es ist die Aufgabe der Ansicht, die Daten zum Rendern an die Vorlage zu senden. –