我有一个数据库 Entries,我希望将当前项目中的项目Entry
显示在模板中entry.html
。然后我希望在侧边栏中有一个指向上一个条目(如果存在)和下一个条目(如果存在)的链接。这是我当前的views.py:
def entry(request, projects_id=1, entries_id=1):
entries_list = Entries.objects.filter(project_id=projects_id)
paginator = Paginator(entries_list, 1)
page = request.GET.get('page')
try:
all_entries = paginator.page(page)
except PageNotAnInteger:
all_entries = paginator.page(1)
except EmptyPage:
all_entries = paginator.page(paginator.num_pages)
return render_to_response('entry.html',
{'projects': Projects.objects.get(id=projects_id),
'entry': Entries.objects.get(project_id=projects_id, entry_unique=entries_id),
'all_entries': all_entries}
)
这是模板中我当前的分页器调用代码:
{% if all_entries.has_previous %}
<a href="/projects/get/{{projects.id}}/entries/get/{{entry.entry_unique|add:"-1"}}"><img src="/static/assets/img/arrow_left.png" width="40"></a>
{% endif %}
{% if all_entries.has_next %}
<a href="/projects/get/{{projects.id}}/entries/get/{{entry.entry_unique|add:"1"}}"><img src="/static/assets/img/arrow_right.png" width="40"></a>
{% endif %}
现在的问题是它只向我显示右箭头,而不是左箭头,并且它不基于当前条目之后是否有更多条目。我进行了设置,以便每个条目的 entry_unique 和 id 字段都不同,因为我希望每个项目的条目增加 1,而不是整个站点,以防万一与它有关。
这是我的参赛作品模型:
class Entries(models.Model):
project_id = models.ForeignKey(Projects)
entry_unique = models.IntegerField(default=0)
entry_pubdate = models.DateTimeField('date published')
所以我的主要问题是,虽然我的 Entries 表有一id
列,但我project_id
如何确定哪个项目拥有该条目,并且entry_unique
每个项目的每个条目递增一个,以便条目 1 为 1,条目 2 为 2,无论该id
列是什么是。
但是,当使用分页器时,它不会显示previous_entry 箭头,只显示next_entry 箭头,这与是否存在另一个entry_unique 没有任何关系。所以本质上我是按 project_id 排序以确定我正在使用哪些条目,但我需要通过 entry_unique 操作这些条目。
编辑:最后但并非最不重要的一点是,看起来 has_next 仅在有另一个更高的 project_id 时才返回 true,因此,如果我转到编号最高的项目,则 has_next 返回 false 并且不会向我显示右箭头。但我仍然无法让 has_previous 工作。