繁体   English   中英

如何为元类设置未指定的值(如何创建模板表类)django_tables2

[英]How to set an unspecified value to Meta class (How to create a template table class) django_tables2

我有 30 多个表,所以我不想为所有这些表编写相同的代码。 甚至它的复制粘贴。 我所有的表都应该是这样的:

class MyTable(tables.Table):
    edit_link = tables.columns.Column(viewname='edit_table_field',
        kwargs={'table_name': 'MyModel', 'pk': A('pk')}, text='edit)
    ...
    class Meta:
        model = MyModel
        ...

我想从这个类中制作一个模板,它将模型的名称( MyModel )作为参数,并为一个类中的每个人创建相同的表。 我不知道如何将值从类传递到元类。

另外,也许有人知道 python 的任何框架,它为我的表实现映射和 CRUD 方法,就像它在 Vaadin (Java) 中一样?

由于 python 是一种高度动态的语言,您可以通过多种方式实现这一点。 想到的一个(您可以在函数内声明类,也可以将它们作为常规对象传递/返回):

def get_table(model_cls):

    class ModelTable(tables.Table):
        edit_link = tables.columns.Column(
            viewname='edit_table_field',
            kwargs={'table_name': model_cls.__name__, 'pk': A('pk')}, 
            text='edit'
        )
        ...
        class Meta:
            model = model_cls
            ...

    return ModelTable


tables = [
    get_table(model)
    for model in (Brand, Product, Category)  # Your models here
]

您也可以扩展它以生成完整的视图。

暂无
暂无

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

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