3

したがって、基本の ItemTable があり、それから継承する多数のテーブルがあります。Meta クラスを変更できないようです。メタクラスを普通にインクルードしようとしてもうまくいかなかったので、このバグレポートを見つけて以下に実装しました。サイレントに失敗します。テーブルは、親メタ クラスの列のみでレンダリングされます。

class ItemTable(tables.Table):

    class Meta:
        model = Item
        attrs = {"class":"paleblue"}
        fields = ('name', 'primary_tech', 'primary_biz', 'backup_tech', 'backup_biz')

class ApplicationTable(ItemTable):

    def __init__(self, *args, **kwargs):
        super(ApplicationTable, self).__init__(*args, **kwargs)

    class Meta(ItemTable.Meta):
        model = Application
        fields += ('jira_bucket_name',)

編集:コードは示されているように修正されました。定義されていない NameError が発生するようになりましたfields

4

3 に答える 3

4

,要素が 1 つのタプルに (カンマ) を追加しませんでした。Meta.attrs['fields'] += ('jira_bucket_name')この行を次のように変更してみてくださいApplicationTable

Meta.attrs['fields'] += ('jira_bucket_name',)

Meta クラス outsite モデル クラス定義を作成しようとするのに役立たなかった場合:

class ItemTableMeta:
    model = Item
    attrs = {"class":"paleblue"}
    fields = ('name', 'primary_tech', 'primary_biz', 'backup_tech', 'backup_biz')

class ApplicationTableMeta(ItemTableMeta):
    model = Application
    fields = ItemTableMeta.fields + ('jira_bucket_name',)


class ItemTable(tables.Table):
    #...
    Meta = ItemTableMeta

class ApplicationTable(ItemTable):
    #...
    Meta = ApplicationTableMeta
于 2014-02-14T20:25:23.470 に答える
4

試す:

class ApplicationTable(ItemTable):
    class Meta:
        model = Application
        fields = ItemTable.Meta.fields + ('jira_bucket_name',)

Meta通常の Django モデルの場合と同様に、テーブルを拡張する際にも同じ問題が発生します。

于 2014-02-14T20:48:57.727 に答える
0

これについては、django-tables の作成者に相談する必要があるかもしれません。これは、標準の Django では問題ありません。

于 2014-02-14T20:30:39.350 に答える