Как я могу реализовать свой ClassView для моего шаблона HTML для поиска поведения? - PullRequest
0 голосов
/ 07 октября 2018

Я супер новичок в Джанго.Я пытаюсь создать клон pastebin.com, который имеет только одну модель (Post) с именем, содержимым и generate_url.У меня проблема с панелью поиска.Я не знаю, как реализовать SearchView в search.html, который генерирует

вот моя модель

from django.db import models
from django.urls import reverse

# Create your models here.
class Post(models.Model):
    name = models.CharField(db_index=True, max_length=300, blank=False)
    content = models.TextField()
    generated_url = models.CharField(db_index=True, max_length=10, blank=False)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("pastebin_app:detail",kwargs={'pk':self.pk})

вот мой root.html для панели поиска

<form action="{% url 'pastebin_app:search' %}" method="get" accept-charset="utf-8">

      <input name="q" type="text" placeholder="Search">

      <input type="submit" value="Search"/>

    </form>

ивот views.py для searchview

class SearchView(ListView):
    template_name = 'pastebin_app/search.html'
    model = models.Post

    def get(self, request, *args, **kwargs):
        q = request.GET.get('q', '')
        self.results = models.Post.objects.filter(name__icontains=q)
        return super().get(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        return super().get_context_data(results=self.results, **kwargs)

Может кто-нибудь помочь мне с созданием шаблона show.html, который выдает результат поиска из SearchView?

1 Ответ

0 голосов
/ 07 октября 2018

Вам нужно оформить заказ django-filter содержит простой API, который поможет вам настроить фильтрацию объектов, а также как обрабатывать сложные фильтры.

def product_list(request):
    f = ProductFilter(request.GET, queryset=Product.objects.all())
    return render(request, 'my_app/template.html', {'filter': f})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...