Как применить django ленивая загрузка для загрузки моих комментариев? - PullRequest
0 голосов
/ 03 февраля 2020

Я пробовал, но не получаю желаемый результат для отложенной загрузки

views.py

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    content_type = ContentType.objects.get_for_model(Post)
    obj_id = post.id
    comments = Comment.objects.filter(
    content_type=content_type, object_id=obj_id)
    parent_id = request.POST.get("parent_id")
    csubmit = False
    if parent_id:
        content_type = ContentType.objects.get_for_model(Comment)
        Comment.objects.create(content_type=content_type, 
        object_id=parent_id,
                           parent_id=parent_id,
                           user=request.user,
                           text=request.POST.get("text"))
    if request.method == 'POST':
        form = CommentForm(data=request.POST)
        if form.is_valid():
        new_comment = form.save(commit=False)
        new_comment.content_type = content_type
        new_comment.user = request.user
        new_comment.save()
        csubmit = True
    else:
        form = CommentForm()

    paginator = Paginator(comments, 10)
    try:
        comments = paginator.page(page)
    except PageNotAnInteger:
        comments = paginator.page(1)
    except EmptyPage:
        comments = paginator.page(paginator.num_pages)

    return render(request, 'post_detail.html', {'post': post, 
    'comments': comments, 'csubmit': csubmit, 'form': form})

Я хочу применить отложенную загрузку в представлении выше и хочу применить к Выше я добавил нумерацию страниц в шаблоне

post_details. html

 {%for comment in comments %}
     <br>
 {{comment.text}}<br/>
    by {{comment.user}}<br>
      <a href='#' class="rep_cmt" data-parentid=" 
 {{comment.id}}">Reply</a><br>
       {% for comment in comment.children.all %}
       {{comment}}
    {% endfor %}
 {%endfor%}
 {% if comments.has_next %}
<a class="infinite-more-link" href="?page={{ comments.next_page_number
}}">More</a>
{% endif %}

 <div class="loading" style="display: none;">
  Loading...
 </div>
<script>
    var infinite = new Waypoint.Infinite({
      element: $('.rep_cmt')[0],
      onBeforePageLoad: function () {
        $('.loading').show();
      },
      onAfterPageLoad: function ($items) {
        $('.loading').hide();
      }
    });
  </script>

Выше я добавил скрипт для рендеринга данных в процессе отложенной загрузки, но он не рендерит

...