2013-05-07 83 views
0

我試圖顯示所有的數據assoicated每個人和每個房子在一個單一的模板與分頁。 問題是每次使用分頁示例人查看特定數據的條目時。另一個叫做房子的分頁被重新設置。 例如,如果我在第3頁的房子,我嘗試查看頁面人員的其他條目。房子分頁將重置爲1.如何解決此分頁衝突?Django 2分頁之間的衝突

車型

class Person(models.Model): 

    user = models.ForeignKey(User) 
    name = models.CharField(max_length=100, blank=True) 

    def __unicode__(self): 
     return self.name 

class House(models.Model): 

    user = models.ForeignKey(User) 
    name = models.CharField(max_length=100) 

意見

def Display(request): 
     user= User.objects.get(username=request.user) 
     comment = Person.objects.get(user=user) 

     posts = House.objects.filter(user=user) 

     paginator = Paginator(comment, 5) 

     try: n = int(request.GET.get("n", '1')) 
     except ValueError: page = 1 

     try: 
      comment = paginator.page(n) 
     except (InvalidPage, EmptyPage): 
      comment = paginator.page(paginator.num_pages) 





     paginator = Paginator(posts, 5) 

     try: page = int(request.GET.get("page", '1')) 
     except ValueError: page = 1 

     try: 
      posts = paginator.page(page) 
     except (InvalidPage, EmptyPage): 
      posts = paginator.page(paginator.num_pages) 

     return render(request,'display.html',{'posts':posts,'comment':comment}) 

HTML

{% for p in posts.object_list %} 
{{p.name}} 
{% endfor %} 


    {% if posts.object_list and posts.paginator.num_pages > 1 %} 
    <div class="pagination" style="margin-top: 20px; margin-left: -20px; "> 


       &nbsp;Page {{ posts.number }} of {{ posts.paginator.num_pages }}<br> 

      {% if posts.has_previous %} 
       <a class="Link" href= "{% if formula %}?text={{formula}}&{% else %}?{% endif %}page={{ posts.previous_page_number }}">newer entries &lt;&lt; </a> 
      {% endif %} 
      {% if posts.has_next %} 
       <a class="Link" href="{% if formula %}?text={{formula}}&{% else %}?{% endif %}page={{ posts.next_page_number }}"> &gt;&gt; older entries</a> 

      {% endif %} 
     </span> 
    </div> 
    {% endif %} 


{% for c in comment.object_list %} 
{{c.name}} 
{% endfor %} 

    {% if comment.object_list and comment.paginator.num_pages > 1 %} 


       &nbsp;Page {{ comment.number }} of {{ comment.paginator.num_pages }} 
       {% if comment.has_previous %} 
       <a class="Link" href= "?n={{ comment.previous_page_number }}">newer entries &lt;&lt; </a> 
      {% endif %}<br> 
      {% if comment.has_next %} 
       <a class="Link" href="?n={{ comment.next_page_number }}"> &gt;&gt; older entries</a> 

      {% endif %} 
     </span> 
    </div> 
    {% endif % 
+0

一件事,我看不對,你的'Display'視圖的第一線,移動你的'評論= Person.objects.get(用戶=用戶)'下移一行,因爲'user'不存在(你有它在它下面的線上設置)。 – themanatuf 2013-05-07 13:11:40

+0

好的,謝謝。現在大問題「與分頁衝突」 – donkeyboy72 2013-05-07 13:37:42

回答

1

首先,變量名稱與描述所有內容的方式相當混亂。

的問題是,你正在使用的頁面兩個不同的變量:nperson(或comment)和pagehouse(或崗位)。在您的每個<a href="">中,您不僅需要設置npage。所以:

<a class="Link" href= "{% if formula %}?text={{formula}}&{% else %}?{% endif %}page={{ posts.previous_page_number }}&n={{ comment.number }}">newer entries &lt;&lt; </a> 
<a class="Link" href="{% if formula %}?text={{formula}}&{% else %}?{% endif %}page={{ posts.next_page_number }}&n={{ comment.number }}"> &gt;&gt; older entries</a> 

<a class="Link" href= "?n={{ comment.previous_page_number }}&page={{ posts.number }}">newer entries &lt;&lt; </a> 
<a class="Link" href="?n={{ comment.next_page_number }}&page={{ posts.number }}"> &gt;&gt; older entries</a> 
+0

對不起我如何描述變量 – donkeyboy72 2013-05-07 14:01:23

+0

我明白了謝謝 – donkeyboy72 2013-05-07 14:53:48

0

在同一視圖你改變paginator值的兩倍

paginator = Paginator(comment, 5) 

# here you have code that does stuff and some lines below 

paginator = Paginator(posts, 5) 
如果你想在同一個視圖中的兩個paginators你也應該區別他們的名字(並將它們添加到您的上下文變量)

東西我可以建議是有,你要調用一個Ajax分頁視圖

在模板中的頁面之間切換。通過這種方式,您可以將頁面分別更改爲每個結果集,而無需重新加載整個視圖(並且可能會丟失分頁狀態)。

+0

@Jacob - 雖然我同意這個答案也指出了一個潛在的問題(不是錯誤,對我原來的評論感到抱歉),但它不會解決你原來的問題。看到我的答案。 – themanatuf 2013-05-07 13:56:42

+0

@Jacob是的,manmanuuf是正確的:如果你只是想解決你目前的問題,那就走他的解決方案吧。我主要是關於如何使用更好設計的解決方案實際改善您的代碼的建議:) – 2013-05-07 14:00:37

+0

哦好吧謝謝 – donkeyboy72 2013-05-07 14:04:31