Как связать все мои результаты поиска с конкретной ссылкой, используя Django - PullRequest
0 голосов
/ 04 апреля 2019

У меня в приложении есть два класса Model. Когда я выполняю поиск, я получаю содержимое модели двух классов в моем приложении в результатах поиска.Я могу добавить только одну прямую ссылку на искомый класс Model.Итак, как я могу добавить одну ссылку на все результаты поиска в моем классе?

Мой Views.py

def news_story(request, slug, *args, **kwargs):
    print(args)
    print(kwargs)
    post = get_object_or_404(Post, slug=slug)
    form = CommentForm(request.POST, request.FILES)
    if request.method == "POST":
        if form.is_valid():
            #form.instance.user = request.user
            form.instance.post = post
            form.save()
            form = CommentForm()
            return HttpResponseRedirect(reverse("news_story", kwargs = {
                'slug': slug
            }))
    comment = Comment.objects.all().order_by("-timestamp")
    if comment:
        comment = comment.filter(post=post)

    try:
        itm = Post.objects.get(slug=slug)
    except Post.DoesNotExist:
        itm = None

    old_post = Post.objects.all()[:8]
    new_post = Post.objects.all().order_by("-timestamp")[:3]
    template = loader.get_template('news_story.html')

    context = {
        'Post': itm,
        'post': comment,
        'form': form,
        'old_post': old_post,
        'new_post': new_post,
    }
    return HttpResponse(template.render(context, request))

def entertainment_story(request, slug, *args, **kwargs):
    print(args)
    print(kwargs)
    post = get_object_or_404(Entertainment, slug=slug)

    try:
        itm = Entertainment.objects.get(slug=slug)
    except Entertainment.DoesNotExist:
        itm = None

    template = loader.get_template('entertainment_story.html')
    context = {
        'Entertainment': itm
    }

    return HttpResponse(template.render(context, request))

def search_results(request):
    query = request.GET.get('q')
    if query:
        post = Post.objects.filter(
                Q(title__icontains=query) |
                Q(author__icontains=query) |
                Q(description__icontains=query) 
            ).distinct() 
        entertainment = Entertainment.objects.filter(
                Q(title__icontains=query) |
                Q(author__icontains=query) |
                Q(description__icontains=query)
            ).distinct() 

    queryset = chain(post, entertainment)
    context = {
        'queryset': queryset,
    }
    return render(request, 'search_results.html', context)

My Template Search_results

 <h2 >This is the result of your search:</h2>
{% for post in queryset %} 
    <div class="col-md-4"> <!-- COLS STARTS HERE -->
    <div class="thumbnail">
    <a href="{% url 'news_story' slug=post.slug %}">
    <img src="{{ MEDIA_URL }}{{ post.blog_image.url }}">
    <div class="description">
    <p>{{ post.description }}</p>
    </div>
    <div class="caption">
    <p>{{ post.title }}</p>
    </div>
    </a>
    <div class="author">
    <p>Posted on {{ post.timestamp }} <br />by {{ post.author }}</p>
    </div>
    </div>
    </div> <!-- COLS ENDS HERE -->
{% empty %}
    <div class="row"> <!-- ROW STARTS HERE -->
    <h3 style="text-align: center">There is no search result</h3>
    <p style="text-align: center">If you are not happy with the result, please do another search.</p>
    </div>
{% endfor %}
    </div>

Проблема href="news_story" в шаблоне search_results - это проблема, только онаработает для news_story сообщения и не работает для сообщения entertainment_story.Как я могу создать одну и ту же ссылку для news_story и entertainment_story.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...