【问题标题】:django-tables2 set of columnsdjango-tables2 列集
【发布时间】:2012-07-24 11:38:12
【问题描述】:

如何告诉 django-tables2 我想在表中包含哪些列?我知道有这个Column attribute'visible',可以设置为False。 但是,我有一个包含许多字段的模型,并且想只显示其中的一些,因此编写所有列的完整列表,只是为了告诉它们中的大多数将不可见,这似乎不是正确的方法。

我正在寻找一种提供要显示的列名列表的方法,如果可能的话,甚至可以让用户选择他想要的列。

我想到了另一种解决方案 - 默认情况下将“可见”属性设为 False,但由于它是在 Column 类中定义的,所以我仍然需要编写一个完整的列表。

由于我没有找到任何 django-tables2 讨论论坛,所以我在这里问。

【问题讨论】:

  • 您的意思是动态显示/隐藏列还是仅配置在运行时显示哪些字段?
  • 主要目标是通过提供一组列名来确定要显示哪些字段,动态部分是可选的。如果没有我的主要目标,我实际上不知道如何实现动态部分。
  • 您应该在您的tables.Table 定义中使用Meta: fields: ()exclude: () 不是吗?

标签: django django-tables2


【解决方案1】:

指定模型字段的示例

你的模型

class Product(model.Models):
    name = model.CharField(max_length=20)
    price = model.DecimalField(max_digit=9, decimal_places=2)

你的桌子

class ProductTable(tables.Table):
    actions = ProductActions(orderable=False) # custom tables.Column()
    class Meta:
        model = Product
        fields = ('name', 'price', 'action') # fields to display

你也可以使用exclude

Related docs entry here

【讨论】:

  • 太好了,我也使用了'sequence',因为'fields'选项不会改变它,就像它对ModelForm所做的那样。
  • 是的,这个 django-tables2 真的是一个很酷的应用程序,大大简化了生活。
  • 我将该文档阅读了 15 次,但无法阅读,但是当我点击您的链接时,我看到了它。 FML
  • 不知何故,pk 字段(由 django 创建)默认显示为名为 ID 的列,并且不能使用 exclude 选项排除
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多