Python 分离;“用户拥有”;从「;其他";Django模板中的数据

Python 分离;“用户拥有”;从「;其他";Django模板中的数据,python,django,Python,Django,我有一个Openstack驱动的、Django修改过的应用程序,它显示了可供用户启动的磁盘映像和快照。用户当前可以看到他们创建的快照和未创建的快照。我想根据当前表是否为用户所有将其分为两部分 我的两个表定义如下(注意我相应地修改了row\u actions): 我已经修改了HTML模板以提取“UserSnapshotsTable”和“OtherSnapshotsTable”表(我复制了原始表并重命名了这两个表),但这两个完整表仍然在各自的标题下生成。有两个函数生成数据: def get_user

我有一个Openstack驱动的、Django修改过的应用程序,它显示了可供用户启动的磁盘映像和快照。用户当前可以看到他们创建的快照和未创建的快照。我想根据当前表是否为用户所有将其分为两部分

我的两个表定义如下(注意我相应地修改了
row\u actions
):

我已经修改了HTML模板以提取“UserSnapshotsTable”和“OtherSnapshotsTable”表(我复制了原始表并重命名了这两个表),但这两个完整表仍然在各自的标题下生成。有两个函数生成数据:

def get_usersnapshots_data(self):
    req = self.request
    marker = req.GET.get(UserSnapshotsTable._meta.pagination_param, None)
    try:
        usersnaps, self._more_snapshots = api.snapshot_list_detailed(req,
                                                           marker=marker)
    except:
        usersnaps = []
        exceptions.handle(req, _("Unable to retrieve user-owned snapshots."))
    return usersnaps

def get_othersnapshots_data(self):
    req = self.request
    marker = req.GET.get(OtherSnapshotsTable._meta.pagination_param, None)
    try:
        othersnaps, self._more_snapshots = api.snapshot_list_detailed(req,
                                                            marker=marker)
    except:
        othersnaps = []
        exceptions.handle(req, _("Unable to retrieve non-user-owned snapshots."))
    return othersnaps
还有为图像定义的编辑/删除选项,以及为快照导入的编辑/删除选项,它们似乎具有关键的比较。以下是“删除”一行(第7行):


我怎样才能把那些桌子分开?这是我第一次在这里提问,如果我能提供更多信息,请告诉我。很抱歉这么长。

据我所知,您正在使用的是
GleaseClient
。如果是这样,您可以使用
snapshot\u list\u detailed()
extra\u filters
参数仅过滤如下用户图像:

usersnaps, self._more_snapshots = api.snapshot_list_detailed(
    req,
    marker = marker,
    extra_filters = {"owner": "user_name"}
)

在封面下
snapshot\u list\u详细介绍了Openstack图像服务API的用法。

这对用户快照部分起到了作用。我添加了
extra_filters={“owner”:req.user.tenant_id}
。但是,对于其他快照部分,我想否定这一点。已尝试执行
非请求用户租户id
!(请求用户租户id)
!请求用户租户id
。在地平线文档中找不到任何内容。有什么建议吗?嗯,恐怕用目前的API是不可能的。您必须自己过滤
get\u othersnapshots\u data()中的快照。
class DeleteImage(tables.DeleteAction):
    data_type_singular = _("Image")
    data_type_plural = _("Images")

    def allowed(self, request, image=None):
      if image:
        return image.owner == request.user.tenant_id
        # Return True to allow table-level bulk delete action to appear.
      return True

    def delete(self, request, obj_id):
      api.image_delete(request, obj_id)
usersnaps, self._more_snapshots = api.snapshot_list_detailed(
    req,
    marker = marker,
    extra_filters = {"owner": "user_name"}
)