繁体   English   中英

Django_tables2 在 Django 模板中使用 MultiTableMixin 时如何识别每个表

[英]Django_tables2 How to identify each table when using MultiTableMixin in Django Template

我正在尝试在 Django 模板中的不同位置呈现两个单独的表。 但是,官方文档只展示了如何在循环中呈现表格:

{% for table in tables %}
    {% render_table table %}
{% endfor %}

这是有效的,但是,我想根据标识符(例如名称)呈现一个表。 以下代码执行此操作,但并没有说明正在呈现哪个表:

{% render_table tables.0%}

有以下几行:

{% render_table tables.newstable %}

将是理想的。

通过删除 MultiTableMixin 类,然后使用 get_context_data() 呈现表,我取得了轻微的成功,但是,这会破坏分页。


    def get_context_data(self, **kwargs):
        context = super(TeamHomeTest, self).get_context_data(**kwargs)
        team_id = self.kwargs['teamid']
        team = Tmteams.objects.get(teamid=team_id)
        q1 = Tmteamsusers.objects.all().filter(teamid=team_id)

        category_ids = []

        categories = nwscategory.objects.all().filter(teamId=team_id)

        for cat in categories:
            category_ids.append(cat.categoryid)

        q2 = nwseditor.objects.filter(categorie_id__in=category_ids)

        team_member_list_table = TeamMemberListTable(q1)
        team_news_list_table = TeamNewsTable(q2)

        context['table1'] = team_member_list_table
        context['table2'] = team_news_list_table
        context['team'] = team
        self.tables=[context['table1'], context['table2']]

        return context

我当前的 get_tables() 方法如下所示:

    def get_tables(self):
        team_id = self.kwargs['teamid']
        q1 = Tmteamsusers.objects.all().filter(teamid=team_id)

        category_ids = []

        categories = nwscategory.objects.all().filter(teamId=team_id)

        for cat in categories:
            category_ids.append(cat.categoryid)

        q2 = nwseditor.objects.filter(categorie_id__in=category_ids)

        table1 = TeamMemberListTable(q1)
        table1.name = "test"

        tables = [
            table1,
            TeamNewsTable(q2)
        ]

        return tables

在您的模板中,您可以将其渲染为:

{% render_table table1 %}
{% render_table table2 %}

因此,您实际上可以随意命名该表。 它不必是 table1、table2、...

只需确保名称与您在 get_context_data 中的分配相匹配。

例如:

 def get_context_data(self, **kwargs):
        context = super(TeamHomeTest, self).get_context_data(**kwargs)
        team_id = self.kwargs['teamid']
        team = Tmteams.objects.get(teamid=team_id)
        q1 = Tmteamsusers.objects.all().filter(teamid=team_id)

        category_ids = []

        categories = nwscategory.objects.all().filter(teamId=team_id)

        for cat in categories:
            category_ids.append(cat.categoryid)

        q2 = nwseditor.objects.filter(categorie_id__in=category_ids)

        team_member_list_table = TeamMemberListTable(q1)
        team_news_list_table = TeamNewsTable(q2)

        context['table_team_member'] = team_member_list_table
        context['table_team_news'] = team_news_list_table
        context['team'] = team
        self.tables=[context['table_team_member'], context['table_team_news']]

        return context

HTML:

{% render_table table_team_member %}
{% render_table table_team_news %}

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM