ポップアップにロードできるかどうかにかかわらず、いくつかのページを含むDjango(1.4)サイトを構築しようとしています。これらのページの一部には、Django-tables2に実装されたリストビューが含まれています
ページがポップアップとして読み込まれると、追加のURLパラメータが追加されます。たとえば
/backoffice/popup/articlegroups/
、と同じページですが/backoffice/articlegroups/
、ポップアップとして表示されます。
私の質問は、この余分な情報(ポップアップかどうか)をDjango-tables2のLinkColumnsに追加する方法です。これは、編集ページへのリンクにもこの情報が必要だからです。
Django-tables2にはアクセサーがあり、クエリセットのプロパティにアクセスするために使用できますが、クエリセットの外部にデータを追加する必要があります。既存のデータセットにデータを追加するのは、せいぜいトリッキーであり、あまりきれいに感じられないこともわかりました。
テーブルまたは列クラスにデータを追加する簡単な方法がないかどうか疑問に思っていたので、table.metaクラスも調べてみましたが、役に立ちませんでした。
私のコードは次のとおりです。
TABLES.PY
class ArticlegroupTable(tables.Table):
artg_name = LinkIfAuthorizedColumn(
'ArticlegroupUpdate',
args=["popup", A('pk')],
edit_perm="articles.maintenance",
)
これはもちろん機能しますが、ご覧のとおり、「ポップアップ」引数を固定文字列として追加しています...
class ArticlegroupTable(tables.Table):
artg_name = LinkIfAuthorizedColumn(
'ArticlegroupUpdate',
args=[A('popup'), A('pk')],
edit_perm="articles.maintenance",
)
クエリセットに「ポップアップ」プロパティがないため、これは機能しません。
VIEWS.PY
def get_context_data(self, ** kwargs):
# get context data to be passed to the respective templates
context = super(ArticlegroupSearch, self).get_context_data(**kwargs)
data = self.get_queryset()
table = ArticlegroupTable(data, self.request)
RequestConfig(self.request, paginate={
"per_page": 5,
}).configure(table)
context.update({'table': table})
if 'popup' in self.kwargs:
context.update({'popup': self.kwargs['popup']})
return context
これはそれほど大げさなシナリオではないようです(tables2のテーブル/列にURLパラメータを追加する)ので、誰かがそうする簡単な方法を知っているかどうか疑問に思いました。
ありがとう、
エリック