0

我有一个 Django 应用程序,其中有一个 DetailView 页面。我还有一个分页的 ListView,还有一个由过滤器创建的(只有作者可以看到自己添加的记录)。我想在 DetailView 中显示的记录的 ListView 中拉一个位置。

我试过以下

position = BankAcType.objects.filter(author=self.request.user).order_by('-created_date').count()

但它给出了记录的总数,而不是 ListView 中特定记录的位置。

我需要位置的原因是我在列表视图中有“查看详细信息”按钮,该按钮用于 DetailView 以及 DetailView 内的更新和删除按钮。因此,如果用户转到详细视图,然后编辑某些内容,然后单击 DetailView 上的“返回”按钮,我希望她回到她所在列表中的同一页面,而不是转到 ListView 的第一页.

如果用户编辑了记录,HTTP 引用程序将不起作用,因为在这种情况下,用户将被带回 EditView。

我尝试在 DetailView 中执行以下操作。

class BankAcType_Detail(DetailView):
    model = BankAcType
    def get_context_data(self, **kwargs):
        context = super(BankAcType_Detail, self).get_context_data(**kwargs)
        position = BankAcType.objects.filter(author=self.request.user).order_by('-created_date').count()
        page = str(int((position)/6)+1)
        context ['page'] = page
        return context

然后在模板中,我有以下后退按钮的代码。

<a href="/master/bankactype_list/?page={{page}}"><button style="background-color: #42c8f5; box-shadow: 10px 10px 25px -7px rgba(60,60,214,1.00); font-weight: bold; color: #054d05; float: left;">Back to List</button></a>
4

1 回答 1

0

我可以通过拉主键然后在列表查询生成的列表中找到主键的位置来做到这一点。

        context = super(BankAcType_Detail, self).get_context_data(**kwargs)
        pk = self.kwargs['pk']
        blist = BankAcType.objects.filter(author=self.request.user).values_list('pk', flat=True).order_by('-created_date')
        position = list(blist).index(pk)

于 2020-07-01T06:43:05.257 回答