0

私はdjango 1.8、Python 2.7.5、django-datatables-view 1.2、およびdatatables 1.10.6を使用しています。columndefscolumns.renderを使用しようとすると、次のエラーが発生します。

警告: 要求された不明...

ここでこれに関するドキュメントを調べたところ、基本的に、データテーブルは、私が要求しているデータを見つけることができないため、私が要求しているデータがわからないことがわかりました。そこで、データがどのように返されるかを調べました。

{
    "recordsTotal": 176,
    "recordsFiltered": 176,
    "draw": 0,
    "data": [
        [
            109,
            "Hostname1",
            "1.1.1.1",
            "Excluded",
            "Down"
        ],
        [
            116,
            "Hostname2",
            "2.2.2.2",
            "Excluded",
            "Up"
        ],
        ...
    ],
    "result": "ok"
}

したがって、PHPを使用する前にデータテーブルを操作しました。列定義を操作するには、キーと値のペアが必要です"data": "Key"。これにより、明らかにこれではないものを定義できます。準備された結果をこれに構築しているものを絞り込んだと思います:

def prepare_results(self, qs):
    data = []
    for item in qs:
        data.append([self.render_column(item, column) for column in self.get_columns()])
    return data

私は一生、このリストのリストを次の方法で結果を返す辞書に変換する方法を理解できません。

{
    "recordsTotal": 176,
    "recordsFiltered": 176,
    "draw": 0,
    "data": [
        {
            "Rest Id": "109",
            "Host Name": "Hostname1",
            "Ip Address": "1.1.1.1",
            "Mode": "Excluded",
            "State": "Down"
        },
        {
            "Rest Id": "116",
            "Host Name": "Hostname2",
            "Ip Address": "2.2.2.2",
            "Mode": "Excluded",
            "State": "Up"
        },
        ...
    ],
    "result": "ok"
}

辞書内包表記でやろうとしていることを達成できる可能性があることは理解していますが、出力を返してもらいたいと思っている方法で正確に取得する方法がわかりません。また、すでに準備されたリストのリストに対して辞書内包表記を行うよりも、これを行うためのより良い方法があると信じなければなりません。ありとあらゆる助けをいただければ幸いです。前もって感謝します。

4

2 に答える 2

2

データが変数にあると仮定するとdatas、次のことができます。

keys = ["Rest Id", "Host Name", "Ip Address", "Mode", "State"]
datas["data"] = [dict(zip(keys, d)) for d in datas["data"]]
于 2015-04-10T08:11:57.250 に答える
0

申し訳ありませんが、Pythonコードを変更するのではなく、datatables javascriptを直接使用して自分の問題を解決しました。

"columnDefs": [
    {
        "targets": 0,
        "data": 0,
        "render": function ( data, type, full, meta ) {
            return '<span data-clipboard-text="' + data + '">' + String(data) + '</span>' + 
            '<a href="URLICANNOTSHARE' + data + 
            'MOREOFTHEURLICANNOTSHARE" class="btn btn-info btn-xs" role="button" target="_blank" style="float:right;"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></a>';
            },
    },
    ....
],

また、私が上で言っていたことを頭が混乱させました。私が言うべきだったのは、デフォルトでデータテーブルはjavascriptオブジェクトを期待しているということです(少なくとも、解析されているデータがオブジェクトであることを示しているすべての例)が、私が返していたのはjavascriptでした配列 (脳の半分があればまだ機能しますが、私はそうではありませんでした)。ただし、python ソリューションを提供できるかどうかを確認するために、開いたままにします。

于 2015-04-13T06:18:35.517 に答える