[ English | 中文 (简体, 中国) | русский | português (Brasil) | नेपाली | 한국어 (대한민국) | Indonesia | français | español | esperanto | English (United Kingdom) | Deutsch ]

Horizon DataTables

Horizon menyertakan API yang diprogram untuk membuat tabel secara pemrograman di UI. Mengapa Anda menginginkan ini? Ini berarti bahwa setiap tabel merender dengan benar dan konsisten, tindakan level-tabel dan baris-level semuanya memiliki API dan tampilan yang konsisten, dan umumnya Anda tidak harus menemukan kembali roda atau menyalin dan menempel setiap kali Anda membutuhkan tabel baru !

Lihat juga

Untuk informasi penggunaan, tips & trik dan lebih banyak contoh lihat Panduan Topik DataTables.

DataTable

Kelas inti yang mendefinisikan struktur tingkat tinggi dari tabel yang diwakili. Contoh:

class MyTable(DataTable):
    name = Column('name')
    email = Column('email')

    class Meta(object):
        name = "my_table"
        table_actions = (MyAction, MyOtherAction)
        row_actions = (MyAction)

Referensi lengkap termasuk di bawah ini:

class horizon.tables.DataTable(request, data=None, needs_form_wrapper=None, **kwargs)[sumber]

Kelas yang mendefinisikan tabel dengan semua data dan aksi terkait.

name

String. Akses read-onlya ke nama yang ditentukan dalam opsi Meta tabel.

multi_select

Boolean. Apakah akses read-only ke tabel ini menampilkan kolom untuk kotak centang multi-select atau tidak.

data

Akses read-only ke data yang diwakili tabel ini.

filtered_data

Akses read-only ke data yang diwakili oleh tabel ini, difilter oleh metode filter() dari klass tabel FilterAction (jika ada disediakan) menggunakan parameter query permintaan saat ini.

calculate_row_status(statuses)[sumber]

Mengembalikan nilai boolean yang menentukan status baris keseluruhan.

Ini ditentukan berdasarkan kamus nama kolom untuk pemetaan status yang disahkan.

Secara default, ini menggunakan logika berikut:

  1. Jika ada status False, kembalikan False.

  2. Jika tidak ada status False tetapi ada atau None, kembalikan None.

  3. Jika semua status adalah True, kembalikan True.

Ini memberikan perlindungan terbesar terhadap positif palsu (false positives) tanpa memberi bobot pada kolom tertentu.

Parameter statuses dilewatkan sebagai kamus memetakan nama kolom ke statusnya untuk memungkinkan fungsi ini ditimpa sedemikian rupa sehingga bobot status satu kolom di atas yang lain jika perilaku yang diinginkan.

classmethod check_handler(request)[sumber]

Tentukan apakah permintaan harus ditangani oleh tabel ini.

css_classes()[sumber]

Mengembalikan kelas CSS tambahan untuk ditambahkan ke tag <table>.

get_absolute_url()[sumber]

Mengembalikan URL canonical untuk tabel ini.

Ini digunakan untuk atribut tindakan POST pada elemen formulir yang membungkus tabel. Dalam banyak kasus ini juga berguna untuk redirecting setelah tindakan yang berhasil dari table.

Untuk kenyamanan, standarnya adalah nilai ``request.get_full_path () `` dengan string kueri apa saja yang dilepas, misal jalur di mana tabel diminta.

get_columns()[sumber]

Mengembalikan kolom tabel ini termasuk yang dihasilkan secara otomatis.

get_empty_message()[sumber]

Mengembalikan pesan yang akan ditampilkan ketika tidak ada data.

get_filter_field()[sumber]

Dapatkan nilai kolom filter yang digunakan untuk filter tipe 'server'.

Ini adalah nilai dari daftar pilihan filter dari tindakan filter

get_filter_first_message()[sumber]

Kembalikan pesan yang akan ditampilkan terlebih dahulu di filter.

ketika pengguna perlu memberikan kriteria pencarian terlebih dahulu sebelum memuat data apa pun.

get_filter_string()[sumber]

Dapatkan nilai string filter.

Untuk filter tipe 'server' ini disimpan dalam sesi sehingga tetap ada di seluruh beban tabel. Untuk jenis filter lain ini diperoleh dari POST dict.

get_full_url()[sumber]

Mengembalikan jalur URL lengkap untuk tabel ini.

Ini digunakan untuk atribut tindakan POST pada elemen formulir yang membungkus tabel. Kami menggunakan metode ini untuk mempertahankan penanda (marker) pagination.

get_marker()[sumber]

Mengembalikan pengidentifikasi untuk objek terakhir dalam kumpulan data saat ini.

Nilai kembali akan digunakan sebagai marker/limit-based paging dalam API.

get_object_by_id(lookup)[sumber]

Mengembalikan objek data yang ID-nya cocok dengan parameter loopup.

Objek data dilihat dari dataset tabel dan data yang cocok dengan parameter lookup yang ditentukan. Kesalahan akan dimunculkan jika match bukan objek data tunggal.

Kami akan mengonversi id objek dan lookup ke unicode sebelum perbandingan.

Penggunaan get_object_id() secara internal.

get_object_display(datum)[sumber]

Mengembalikan nama tampilan yang mengidentifikasi objek ini.

Secara default, ini mengembalikan atribut name dari objek yang diberikan, tetapi ini bisa diganti untuk mengembalikan nilai lainnya.

get_object_id(datum)[sumber]

Mengembalikan pengidentifikasi untuk objek yang baris ini akan wakili.

Secara default ini mengembalikan atribut id pada objek yang diberikan, tetapi ini dapat diganti untuk mengembalikan nilai-nilai lainnya.

Peringatan

Pastikan bahwa nilai yang dikembalikan adalah nilai unik untuk id jika tidak masalah rendering dapat terjadi.

get_pagination_string()[sumber]

Mengembalikan string parameter kueri untuk paginasi ke halaman berikutnya.

get_prev_marker()[sumber]

Mengembalikan pengidentifikasi untuk objek pertama dalam kumpulan data saat ini.

Nilai kembali akan digunakan sebagai marker/limit-based paging dalam API.

get_prev_pagination_string()[sumber]

Mengembalikan string parameter kueri ke paginasi ke halaman sebelumnya.

get_row_actions(datum)[sumber]

Mengembalikan daftar instance tindakan untuk baris tertentu.

get_row_status_class(status)[sumber]

Mengembalikan nama kelas css yang ditentukan oleh nilai status.

Nama kelas ini digunakan untuk menunjukkan status baris dalam tabel jika ada status_columns telah ditentukan.

get_rows()[sumber]

Kembalikan data baris untuk tabel ini yang dibagi menurut kolom.

get_table_actions()[sumber]

Mengembalikan daftar instance tindakan untuk tabel ini.

property has_actions

Menunjukkan apakah ada tindakan yang tersedia di tabel ini.

Mengembalikan nilai boolean.

has_more_data()[sumber]

Mengembalikan nilai boolean yang menunjukkan apakah ada lebih banyak data.

Mengembalikan True jika ada lebih banyak data yang tersedia untuk tabel ini dari sumber (umumnya API).

Metode ini sebagian besar dimaksudkan untuk penggunaan internal, tetapi jika Anda ingin menimpanya untuk memberikan perilaku khusus, Anda dapat melakukannya dengan risiko Anda sendiri.

has_prev_data()[sumber]

Mengembalikan nilai boolean yang menunjukkan apakah ada data sebelumnya.

Mengembalikan True jika ada data sebelumnya yang tersedia untuk tabel ini dari sumber (umumnya API).

Metode ini sebagian besar dimaksudkan untuk penggunaan internal, tetapi jika Anda ingin menimpanya untuk memberikan perilaku khusus, Anda dapat melakukannya dengan risiko Anda sendiri.

inline_edit_handle(request, table_name, action_name, obj_id, new_row)[sumber]

Penangan redaksi inline.

Menampilkan formulir atau menangani pembaruan melalui POST sel.

inline_update_action(request, datum, cell, obj_id, cell_name)[sumber]

Menangani pembaruan dengan POST sel.

maybe_handle()[sumber]

Menangani tindakan tabel jika perlu.

Ini menentukan apakah permintaan harus ditangani oleh tindakan apa pun pada tabel ini setelah data dimuat.

maybe_preempt()[sumber]

Tentukan apakah permintaan harus ditangani pada tahap sebelumnya.

Itu menentukan permintaan harus ditangani oleh tindakan preemptive pada tabel ini atau dengan pembaruan baris AJAX sebelum memuat data apa pun.

property needs_form_wrapper

Kembali jika tabel ini harus diberikan terbungkus (rendered wrapped) tag ``<form> ``.

Mengembalikan nilai boolean.

static parse_action(action_string)[sumber]

Parsing parameter action_string yang dikirim kembali dengan data POST.

Secara default ini mem-parsing string yang diformat sebagai {{ table_name }}__{{ action_name }}__{{ row_id }} dan mengembalikan masing-masing bagian. row_id merupakan opsional.

render()[sumber]

Merender tabel menggunakan templat dari opsi tabel.

render_row_actions(datum, row=False)[sumber]

Merender tindakan yang ditentukan dalam Meta.row_actions.

Tindakan diberikan dengan menggunakan data baris saat ini. Jika row True, tindakan diberikan dalam deretan tombol. Kalau tidak, mereka akan ditampilkan di kotak dropdown.

render_table_actions()[sumber]

Merender tindakan yang ditentukan dalam Meta.table_actions.

sanitize_id(obj_id)[sumber]

Override untuk memodifikasi obj_id yang masuk agar cocok dengan API yang ada.

Ini digunakan untuk memodifikasi obj_id yang masuk (digunakan dalam Horizon) ke tipe data atau format yang diharapkan oleh API.

set_multiselect_column_visibility(visible=True)[sumber]

sembunyikan kolom kotak centang jika tidak ada tindakan tabel saat ini diizinkan.

take_action(action_name, obj_id=None, obj_ids=None)[sumber]

Temukan tindakan yang sesuai dan rutekan data objek ke sana.

Tindakan harus mengembalikan pengalihan HTTP jika berhasil, atau nilai yang mengevaluasi menjadi False jika tidak berhasil.

Opsi DataTable

Opsi berikut dapat didefinisikan dalam kelas Meta di dalam kelas DataTable . Contoh:

class MyTable(DataTable):
    class Meta(object):
        name = "my_table"
        verbose_name = "My Table"
class horizon.tables.base.DataTableOptions(options)[sumber]

Berisi opsi untuk objek DataTable.

name

Nama pendek atau slug untuk table.

verbose_name

Nama yang lebih verbose untuk tabel dimaksudkan untuk tujuan tampilan.

columns

Daftar objek kolom atau nama kolom. Kontrol pemesanan/tampilan (ordering/display) kolom di dalam tabel.

table_actions

Daftar kelas aksi berasal dari kelas Action. Aksi ini akan menangani tugas seperti penghapusan massal, dll. untuk beberapa objek sekaligus.

table_actions_menu

Daftar kelas aksi yang mirip dengan table_actions kecuali ini akan ditampilkan dalam menu, bukan sebagai tombol individu. Aksi dari daftar ini akan lebih diutamakan daripada aksi dari daftar table_actions.

table_actions_menu_label

Label dari tombol menu untuk table_actions_menu. Defaultnya adalah "Actions" atau "More Actions" bergantung pada table_actions.

row_actions

Daftar yang mirip dengan table_actions kecuali disesuaikan untuk ditampilkan untuk setiap baris. Aksi ini bertindak pada objek tunggal pada suatu waktu.

actions_column

Nilai Boolean untuk mengontrol rendering kolom tambahan yang berisi berbagai tindakan untuk setiap baris. Default ke True jika ada tindakan yang ditentukan dalam opsi row_actions.

multi_select

Nilai Boolean untuk mengontrol rendering kolom tambahan dengan kotak centang untuk memilih beberapa objek dalam tabel. Default ke True jika ada tindakan yang ditentukan dalam opsi table_actions.

filter

Nilai Boolean untuk mengontrol tampilan kotak pencarian "filter" dalam tindakan tabel. Secara default ia memeriksa apakah instance dari FilterAction ada di table_actions.

template

String yang berisi templat yang harus digunakan untuk membuat tabel. Default ke "horizon/common/_data_table.html".

row_actions_dropdown_template

String yang berisi template yang harus digunakan untuk membuat dropdown tindakan baris. Default ke "horizon/common/_data_table_row_actions_dropdown.html".

row_actions_row_template

String yang berisi template yang harus digunakan untuk membuat aksi baris. Default ke "horizon/common/_data_table_row_actions_row.html".

table_actions_template

String yang berisi template yang harus digunakan untuk membuat aksi tabel. Default ke "horizon/common/_data_table_table_actions.html".

context_var_name

Nama variabel konteks yang akan berisi tabel saat diberikan. Default ke "table".

prev_pagination_param

Nama parameter string kueri yang akan digunakan saat membuat halaman mundur (paginating backward) dalam tabel ini. Saat menggunakan beberapa tabel dalam satu tampilan, ini perlu diubah untuk membedakan antara tabel. Default: "prev_marker".

pagination_param

Nama parameter string kueri yang akan digunakan saat membuat halaman ke depan dalam tabel ini. Saat menggunakan beberapa tabel dalam satu tampilan, ini perlu diubah untuk membedakan antara tabel. Default: "marker".

status_columns

Daftar atau tuple nama kolom yang mewakili "state" dari objek data yang diwakili.

Jika status_columns diatur, ketika baris diberikan nilai kolom ini akan digunakan untuk menambahkan kelas tambahan ke baris dalam bentuk "status_up" atau "status_down" untuk data baris itu.

Status baris digunakan oleh komponen Horizon lain untuk memicu tugas seperti pembaruan AJAX dinamis.

cell_class

Kelas yang harus digunakan untuk merender sel dari tabel ini. Pilihan. Default: Cell.

row_class

Kelas yang harus digunakan untuk merender baris tabel ini. Pilihan. Default: Row.

column_class

Kelas yang harus digunakan untuk menangani kolom tabel ini. Pilihan. Default: Column.

css_classes

Kelas CSS kustom atau kelas untuk ditambahkan ke <table> tag dari tabel yang diberikan, untuk saat tabel tertentu membutuhkan styling khusus. Default: "".

mixed_data_type

Sebuah toggle untuk menunjukkan jika tabel menerima dua atau lebih jenis data. Optional. Default: False

data_types

Daftar tipe data yang akan diterima oleh tabel ini. Default menjadi daftar kosong, tetapi jika atribut mixed_data_type diatur ke True, maka daftar ini harus memiliki setidaknya satu elemen.

data_type_name

Nama atribut untuk menetapkan data yang diteruskan ke tabel saat menerima data campuran. Default: "_table_data_type"

footer

Boolean untuk mengontrol apakah akan menampilkan footer tabel atau tidak. Default: True.

hidden_title

Boolean untuk mengontrol apakah akan menampilkan judul tabel atau tidak. Default: True.

permissions

Daftar nama izin yang diperlukan tabel ini agar dapat ditampilkan. Default ke daftar kosong ([]).

FormsetDataTable

Anda dapat mengintegrasikan :class: .DataTable dengan Django Formset menggunakan salah satu kelas berikut:

class horizon.tables.formset.FormsetDataTableMixin(*args, **kwargs)[sumber]

Mixin untuk DataTable untuk mendukung Django Formsets.

Ini berfungsi sama dengan FormsetDataTable di bawah, tetapi dapat digunakan untuk menambah subkelas DataTable yang ada.

get_empty_row()[sumber]

Kembalikan baris tanpa data, untuk ditambahkan di akhir tabel.

get_formset()[sumber]

Berikan formset yang sesuai dengan DataTable ini.

Gunakan ini untuk memvalidasi formset dan untuk mendapatkan kembali data yang dikirimkan.

get_required_columns()[sumber]

Daftar nama kolom yang memiliki field yang diperlukan.

get_rows()[sumber]

Kembalikan data baris untuk tabel ini yang dibagi menurut kolom.

Objek baris mendapatkan parameter form tambahan, dengan formset yang sesuai dengan baris itu.

class horizon.tables.formset.FormsetDataTable(*args, **kwargs)[sumber]

DataTable dengan dukungan untuk Django Formsets.

Perhatikan bahwa horizon.tables.DataTableOptions.row_class dan horizon.tables.DataTaleOptions.cell_class ditimpa dalam kelas ini, jadi mengaturnya di Meta tidak berpengaruh.

formset_class

Kelas yang dibuat dengan django.forms.formsets.formset_factory berisi definisi formset untuk digunakan dengan tabel data ini.

Kolom yang diberi nama sama dengan field formset akan diganti dengan widget formulir di tabel. Setiap field tersembunyi dari formset juga akan dimasukkan. Field yang tidak disembunyikan dan tidak sesuai dengan kolom apa pun tidak akan disertakan dalam formulir.

Table Components

class horizon.tables.Column(transform, verbose_name=None, sortable=True, link=None, allowed_data_types=None, hidden=False, attrs=None, status=False, status_choices=None, display_choices=None, empty_value=None, filters=None, classes=None, summation=None, auto=None, truncate=None, link_classes=None, wrap_list=False, form_field=None, form_field_attributes=None, update_action=None, link_attrs=None, policy_rules=None, cell_attributes_getter=None, help_text=None)[sumber]

Kelas yang mewakili satu kolom dalam DataTable.

transform

String atau callable. Jika ``transform `` adalah string, seharusnya nama atribut pada kelas data yang mendasari yang harus ditampilkan dalam kolom ini. Jika ini callable, itu akan melewati data baris saat ini pada waktu render dan harus mengembalikan isi sel. Wajib.

verbose_name

Nama untuk kolom ini yang harus digunakan untuk tujuan tampilan. Default ke nilai transform dengan huruf pertama dari setiap kata dikapitalisasi jika transform tidak dapat dipanggil, jika tidak maka defaultnya adalah string kosong ("").

sortable

Boolean untuk menentukan apakah kolom ini harus diurutkan atau tidak. Default ke True.

hidden

Boolean untuk menentukan apakah kolom ini harus ditampilkan atau tidak saat merender tabel. Default: False.

String atau callable yang mengembalikan URL yang akan melilit teks kolom ini sebagai tautan.

allowed_data_types

Daftar tipe data yang harus dibuat tautannya. Default adalah daftar kosong ([]).

Ketika daftar kosong dan atribut link bukan None, semua baris di bawah kolom ini akan menjadi tautan.

status

Boolean menentukan apakah kolom ini mewakili status (misal "enabled/disabled", "up/down", "active/inactive"). Default: False.

status_choices

Sebuah tuple dari beberapa tuple yang mewakili kemungkinan nilai data untuk kolom status dan persamaan boolean terkait. Positive state harus sama dengan True, negative state harus sama dengan False, dan status yang tidak ditentukan harus None.

Nilai dibandingkan dengan cara case-insensitive.

Contoh (ini juga merupakan nilai default)

status_choices = (
        ('enabled', True),
        ('true', True),
        ('up', True),
        ('active', True),
        ('yes', True),
        ('on', True),
        ('none', None),
        ('unknown', None),
        ('', None),
        ('disabled', False),
        ('down', False),
        ('false', False),
        ('inactive', False),
        ('no', False),
        ('off', False),
    )
display_choices

Sebuah tuple dari beberapa tuple yang mewakili nilai yang mungkin untuk menggantikan data ketika ditampilkan dalam sel kolom.

empty_value

String atau callable untuk digunakan untuk sel yang tidak memiliki data. Default ke string "-".

summation

String yang berisi nama metode penjumlahan untuk digunakan dalam pembuatan ringkasan baris untuk kolom ini. Secara default, opsi adalah "sum" atau "average", yang berperilaku seperti yang diharapkan. Optional.

filters

Daftar fungsi (sering kali filter template) untuk diterapkan ke nilai data untuk kolom ini sebelum keluaran. Ini adalah cara pintas yang efektif untuk menulis fungsi transform kustom dalam kasus sederhana.

classes

Sebuah iterable kelas CSS yang harus ditambahkan ke kolom ini. Contoh: classes=('foo', 'bar').

attrs

Sebuah dict string atribut HTML yang harus ditambahkan ke kolom ini. Contoh: attrs={"data-foo": "bar"}.

cell_attributes_getter

Dapat dipanggil untuk mendapatkan atribut HTML dari sel kolom tergantung pada data. Misalnya, untuk menambahkan deskripsi tambahan atau informasi bantuan untuk data dalam sel kolom (misalnya di panel Image, untuk kolom 'format')

helpText = {
  'ARI':'Amazon Ramdisk Image',
  'QCOW2':'QEMU' Emulator'
  }

getHoverHelp(data):
  text = helpText.get(data, None)
  if text:
      return {'title': text}
  else:
      return {}
...
...
cell_attributes_getter = getHoverHelp
truncate

Bilangan integer untuk panjang maksimum string dalam kolom ini. Jika panjang data dalam kolom ini lebih besar dari jumlah yang disediakan, data untuk kolom ini akan terpotong dan ellipsis akan ditambahkan ke data yang terpotong. Default untuk None.

Sebuah iterable kelas CSS yang akan ditambahkan ketika teks kolom ditampilkan sebagai tautan. Ini dibiarkan untuk kompatibilitas ke belakang. Tidak lagi mendukung atribut link_attributes. Contoh: link_classes=('link-foo', 'link-bar'). Defaults ke None.

wrap_list

Nilai Boolean yang menunjukkan apakah isi sel ini harus dibungkus dengan tag <ul></ul>. Berguna dalam hubungannya dengan filter template Django unordered_list. Default ke False.

form_field

Bidang formulir (form field) yang digunakan untuk pengeditan sebaris kolom. forms.Field django dapat digunakan atau form.Widget django dapat digunakan.

Contoh: form_field=forms.CharField(). Default ke None.

form_field_attributes

Atribut html tambahan yang akan dirender ke form_field. Contoh: form_field_attributes={'class': 'bold_input_field'}. Defaults ke None.

update_action

Kelas yang mewarisi dari tables.actions.UpdateAction, metode update_cell menangani menyimpan data yang diedit sebaris. Metode tables.base.Row get_data perlu dihubungkan ke tabel untuk mendapatkan data. Contoh: update_action=UpdateCell. Defaults ke None.

Sebuah dict string atribut HTML yang harus ditambahkan ketika teks kolom ditampilkan sebagai tautan. Examples: link_attrs={"data-foo": "bar"}. link_attrs={"target": "_blank", "class": "link-foo link-bar"}. Defaults untuk None.

policy_rules

Daftar lingkup dan aturan tuple untuk melakukan pemeriksaan kebijakan, komposisi yang adalah (ruang lingkup, aturan)

  • scope: jenis layanan yang mengatur kebijakan untuk aksi

  • rule: string yang mewakili aksi yang harus diperiksa

untuk kebijakan yang memerlukan pemeriksaan aturan tunggal, policy_rules akan terlihat seperti:

"(("compute", "compute:create_instance"),)"

untuk kebijakan yang membutuhkan beberapa pemeriksaan aturan, aturan akan terlihat seperti:

"(("identity", "identity:list_users"),
  ("identity", "identity:list_roles"))"
help_text

String teks bantuan sederhana yang ditampilkan di tooltip saat Anda mengarahkan kursor ke ikon bantuan di sebelah nama Column. Default untuk None.

allowed(request)[sumber]

Tentukan apakah processing/displaying kolom diperbolehkan.

Itu ditentukan berdasarkan permintaan saat ini.

get_data(datum)[sumber]

Mengembalikan data tampilan akhir untuk kolom ini dari input yang diberikan.

Nilai kembali akan berupa atribut yang ditentukan untuk kolom ini atau nilai pengembalian metode attr: ~ horizon.tables.Column.transform untuk kolom ini.

Mengembalikan nilai akhir untuk properti link kolom.

Jika allowed_data_types kolom ini tidak kosong dan datum memiliki tipe yang ditetapkan, periksa apakah tipe datum ada di daftar allowed_data_types. Jika tidak, datum tidak akan ditampilkan sebagai tautan.

Jika link adalah callable, itu akan melewati objek data saat ini dan harus mengembalikan URL. Kalau tidak get_link_url akan berusaha memanggil reverse pada link dengan id objek sebagai parameter. Gagal itu, itu hanya akan mengembalikan nila i``link``.

get_raw_data(datum)[sumber]

Mengembalikan data mentah untuk kolom ini.

Tidak ada filter atau pemformatan yang diterapkan pada data yang dikembalikan. Ini berguna saat melakukan perhitungan pada data dalam tabel.

get_summation()[sumber]

Mengembalikan nilai ringkasan untuk data di kolom ini.

Ini mengembalikan nilai ringkasan jika metode penjumlahan yang valid ditentukan untuk itu. Kalau tidak mengembalikan None.

class horizon.tables.Row(table, datum=None)[sumber]

Merupakan baris dalam tabel.

Ketika pengulangan (iterated), instance Row akan menghasilkan masing-masing selnya.

Baris mampu memperbarui AJAX, dengan sedikit pekerjaan tambahan:

Properti ajax perlu diatur ke True, dan subkelas perlu mendefinisikan metode get_data yang mengembalikan objek data yang sesuai untuk dikonsumsi oleh tabel (secara efektif pencarian "get" versus pencarian "list" tabel).

Interval pembaruan otomatis dapat dikonfigurasi dengan mengatur kunci ajax_poll_interval dalam kamus HORIZON_CONFIG kamus. Default: 2500 (diukur dalam milidetik).

table

Tabel tempat baris ini dimiliki.

datum

Objek data yang diwakili baris ini.

id

String yang secara unik mewakili baris ini terdiri dari nama tabel dan pengidentifikasi objek data baris.

cells

Sel milik baris ini disimpan dalam objek OrderedDict. Atribut ini diisi selama instantiasi.

status

Nilai Boolean mewakili status baris ini yang dihitung dari nilai-nilai ``status_columns` tabel jika tabel itu ditetapkan.

status_class

Mengembalikan kelas css untuk status baris berdasarkan status.

ajax

Nilai Boolean untuk menentukan apakah pembaruan ajax untuk baris ini diaktifkan.

ajax_action_name

String yang digunakan untuk kunci parameter kueri untuk meminta pembaruan AJAX. Secara umum Anda tidak perlu mengubah nilai ini. Default: "row_update".

ajax_cell_action_name

String yang digunakan untuk kunci parameter kueri untuk meminta pembaruan sel AJAX. Secara umum Anda tidak perlu mengubah nilai ini. Ini juga digunakan untuk pengeditan sel inline. Default: "cell_update".

can_be_selected(datum)[sumber]

Menentukan apakah baris dapat dipilih.

Secara default jika multiselect diaktifkan, kembali True. Anda dapat menghapus kotak centang setelah pembaruan ajax di sini jika diperlukan.

get_cells()[sumber]

Mengembalikan sel yang terikat untuk baris ini secara berurutan.

get_data(request, obj_id)[sumber]

Mengambil data yang diperbarui untuk baris berdasarkan ID objek yang diberikan.

Harus diimplementasikan oleh subkelas untuk memungkinkan pembaruan AJAX.

load_cells(datum=None)[sumber]

Muat data baris dan inisialisasi semua sel di baris.

Ini juga mengatur properti baris yang sesuai yang membutuhkan data baris untuk ditentukan.

Data baris disediakan saat inisialisasi atau sebagai argumen untuk fungsi ini.

Fungsi ini dipanggil secara otomatis oleh :meth: ~ horizon.tables.Row .__ init__ jika argumen datum disediakan. Namun, dengan tidak menyediakan data selama inisialisasi fungsi ini memungkinkan untuk kemungkinan pola memuat dua langkah ketika Anda membutuhkan instance baris tetapi belum memiliki data yang tersedia.

Actions

class horizon.tables.Action(*args, **kwargs)[sumber]

Mewakili tindakan yang dapat diambil pada data tabel ini.

name

Wajib. Nama pendek atau "slug" mewakili tindakan ini. Nama ini tidak boleh diubah saat runtime.

verbose_name

Nama deskriptif yang digunakan untuk tujuan tampilan. Default untuk nilai ``name `` dengan huruf pertama dari setiap kata yang dikapitalisasi.

verbose_name_plural

Digunakan seperti verbose_name dalam kasus di mana handle_multiple adalah True. Default untuk verbose_name dengan huruf "s" ditambahkan.

method

Metode HTTP untuk aksi ini. Default untuk POST. Metode lain mungkin atau mungkin tidak berhasil saat ini.

requires_input

Nilai Boolean menunjukkan apakah aksi ini dapat dilakukan tanpa masukan tambahan (mis. Id objek). Default ke True.

preempt

Nilai Boolean menunjukkan apakah aksi ini harus dievaluasi dalam periode setelah tabel dibuat tetapi sebelum data telah dimuat.

Ini dapat memungkinkan aksi yang tidak memerlukan akses ke data tabel penuh untuk melewati semua panggilan API dan pemrosesan yang seharusnya diperlukan untuk memuat tabel.

allowed_data_types

Daftar yang berisi tipe data yang diizinkan dari tindakan. Jika tipe datum ada dalam daftar ini, tindakan akan ditampilkan pada baris untuk datum.

Default menjadi daftar kosong ([]). Ketika diatur untuk kosong, aksi akan menerima segala jenis data.

policy_rules

daftar cakupan (scope) dan aturan tupel (rule tuple) untuk melakukan pemeriksaan kebijakan, yang komposisinya adalah (cakupan, aturan)

  • scope: jenis layanan yang mengatur kebijakan untuk aksi

  • rule: string yang mewakili aksi yang harus diperiksa

for a policy that requires a single rule check:
    policy_rules should look like
        "(("compute", "compute:create_instance"),)"
for a policy that requires multiple rule checks:
    rules should look like
        "(("identity", "identity:list_users"),
          ("identity", "identity:list_roles"))"

Setidaknya satu dari metode berikut harus didefinisikan:

single(self, data_table, request, object_id)

Handler untuk aksi satu objek.

multiple(self, data_table, request, object_ids)

Handler untuk aksi multi-objek.

handle(self, data_table, request, object_ids)

Jika fungsi tunggal dapat bekerja untuk kasus objek tunggal dan multi-objek maka cukup dengan menyediakan fungsi handle` `akan secara internal rute permintaan ``single dan multiple ke handle dengan panggilan dari single sedang diubah menjadi list yang hanya berisi id objek tunggal.

get_param_name()[sumber]

Mengembalikan nama parameter POST penuh untuk aksi ini.

Default untuk {{ table.name }}__{{ action.name }}.

class horizon.tables.LinkAction(*args, **kwargs)[sumber]

Aksi tabel yang hanya berupa tautan daripada bentuk POST.

name

Wajib. Nama pendek atau "slug" mewakili tindakan ini. Nama ini tidak boleh diubah saat runtime.

verbose_name

String yang akan ditampilkan sebagai teks tautan. (Wajib)

url

String atau callable yang memutuskan untuk menggunakan url sebagai target tautan. Anda harus mendefinisikan atribut url atau mengganti metode get_link_url di kelas.

allowed_data_types

Daftar yang berisi tipe data yang diizinkan dari tindakan. Jika tipe datum ada dalam daftar ini, tindakan akan ditampilkan pada baris untuk datum.

Default menjadi daftar kosong ([]). Ketika diatur untuk kosong, aksi akan menerima segala jenis data.

Mengembalikan URL final berdasarkan nilai url.

Jika url dapat dipanggil maka akan memanggil fungsi. Jika tidak, maka akan mencoba untuk memanggil reverse pada url. Jika gagal, itu hanya akan mengembalikan nilai url apa adanya.

Ketika dipanggil untuk aksi baris, objek data baris saat ini akan dilewatkan sebagai parameter pertama.

class horizon.tables.FilterAction(*args, **kwargs)[sumber]

Kelas dasar mewakili aksi filter untuk tabel.

name

Nama pendek atau "slug" mewakili aksi ini. Default untuk `` "filter" ``.

verbose_name

Nama deskriptif yang digunakan untuk tujuan tampilan. Default untuk nilai ``name `` dengan huruf pertama dari setiap kata yang dikapitalisasi.

param_name

String yang mewakili nama parameter permintaan yang digunakan untuk istilah pencarian. Default: "q".

filter_type

String yang mewakili jenis filter ini. Jika ini disetel ke "server" maka filter_choices juga harus disediakan. Default: "query".

filter_choices

Diperlukan untuk filter jenis server. Sebuah tuple tuple yang mewakili opsi filter. Komposisi Tuple harus dievaluasi ke (string, string, boolean, string, boolean), mewakili yang berikut:

  • Nilai pertama adalah parameter filter.

  • Nilai kedua mewakili nilai tampilan.

  • Nilai opsional ketiga menunjukkan apakah atau tidak itu harus diterapkan ke permintaan API sebagai atribut query API. Filter jenis API tidak perlu diperhitungkan dalam metode filter karena API akan melakukan pemfilteran. Namun, jenis filter server pada umumnya perlu dilakukan dalam metode filter. Secara default, atribut ini tidak disediakan (`` False``).

  • Nilai opsional keempat digunakan sebagai teks bantuan jika disediakan. Standarnya adalah None yang artinya tidak ada teks bantuan.

  • Nilai opsional kelima menentukan apakah pilihan ditampilkan kepada pengguna atau tidak. Defaultnya adalah True. Ini berguna ketika pilihan perlu ditampilkan secara kondisional.

needs_preloading

Jika True, fungsi filter akan dipanggil untuk permintaan GET awal dengan filter_string` kosong, terlepas dari nilai ``metode.

filter(table, data, filter_string)[sumber]

Menyediakan logika penyaringan yang sebenarnya.

Metode ini harus ditimpa oleh subclass dan mengembalikan data yang difilter.

get_param_name()[sumber]

Mengembalikan nama parameter kueri lengkap untuk tindakan ini.

Default untuk {{ table.name }}__{{ action.name }}__{{ action.param_name }}.

get_select_options()[sumber]

Berikan nilai, string, dan help_text untuk template yang dirender.

help_text dikembalikan jika berlaku.

is_api_filter(filter_field)[sumber]

Tentukan apakah suatu field filter yang diberikan harus digunakan sebagai filter API.

class horizon.tables.FixedFilterAction(*args, **kwargs)[sumber]

Aksi filter dengan tombol tetap.

categorize(table, rows)[sumber]

Ganti untuk memisahkan baris ke dalam kategori.

Agar pemfilteran berfungsi dengan baik pada klien, setiap baris akan membutuhkan kelas CSS yang dimulai dengan 'category-', diikuti oleh nilai tombol tetap.

Kembalikan dict dengan kunci (key) untuk nilai (value) setiap tombol tetap, dan nilai yang merupakan daftar baris dalam kategori itu.

filter(table, images, filter_string)[sumber]

Menyediakan logika penyaringan yang sebenarnya.

Metode ini harus ditimpa oleh subclass dan mengembalikan data yang difilter.

get_fixed_buttons()[sumber]

Mengembalikan daftar dict yang menggambarkan tombol tetap yang digunakan untuk memfilter.

Setiap item daftar harus berupa tanda dengan tombol-tombol berikut:

  • text: Teks untuk ditampilkan pada tombol

  • icon: Ikon kelas untuk ikon elemen (disisipkan sebelum teks).

  • value: Nilai dikembalikan ketika tombol diklik. Nilai ini diteruskan ke filter()` sebagai filter_string.

class horizon.tables.BatchAction(*args, **kwargs)[sumber]

Aksi tabel yang mengambil aksi batch pada satu atau lebih objek.

Tindakan ini seharusnya tidak memerlukan input pengguna pada basis per-objek.

name

Nama pendek atau "slug" yang mewakili tindakan ini. Harus berupa satu kata seperti "delete", "add", "disable", dll.

action_present()

Metode mengembalikan nama aksi sekarang. Ini digunakan sebagai label tindakan.

Metode harus menerima parameter integer/long dan mengembalikan bentuk tampilan nama yang benar-benar terwujud (tergantung pada integer) dan diterjemahkan dalam string atau tuple/list.

Bentuk tampilan yang dikembalikan sangat disarankan untuk menjadi nama aksi lengkap dengan bentuk kata kerja transitif dan kata benda objek. Setiap kata dikapitalisasi dan string harus ditandai sebagai diterjemahkan.

Jika tuple atau daftar - kemudian pengaturan self.current_present_action = n akan mengatur item aktif saat ini dari list(action_present[n])

action_past()

Metode mengembalikan nama aksi sebelumnya. Ini biasanya digunakan untuk menampilkan pesan ketika aksi selesai.

Metode harus menerima parameter integer/long dan mengembalikan bentuk tampilan nama yang benar-benar terwujud (tergantung pada integer) dan diterjemahkan dalam string atau tuple/list.

Detailnya sama dengan action_present.

success_url

Lokasi opsional untuk mengalihkan setelah menyelesaikan aksi penghapusan. Default ke halaman saat ini.

help_text

Pesan opsional untuk menyediakan teks bantuan yang sesuai untuk pengguna horizon.

action(request, datum_id)[sumber]

Menerima id objek tunggal dan melakukan aksi spesifik.

Metode ini diperlukan.

Beberapa nilai parameter tidak valid:

get_default_attrs()[sumber]

Mengembalikan daftar atribut HTML default untuk aksi.

get_success_url(request=None)[sumber]

Mengembalikan URL untuk dialihkan ke setelah aksi yang berhasil.

update(request, datum)[sumber]

Mengganti nama verbose aksi, jika diperlukan.

class horizon.tables.DeleteAction(*args, **kwargs)[sumber]

Aksi tabel yang digunakan untuk melakukan operasi penghapusan pada data tabel.

name

Nama pendek atau "slug" yang mewakili tindakan ini. Default untuk 'delete'

action_present()

Metode mengembalikan nama aksi sekarang. Ini digunakan sebagai label tindakan.

Metode harus menerima parameter integer/long dan mengembalikan bentuk tampilan nama yang benar-benar terwujud (tergantung pada integer) dan diterjemahkan dalam string atau tuple/list.

Bentuk tampilan yang dikembalikan sangat disarankan untuk menjadi nama aksi lengkap dengan bentuk kata kerja transitif dan kata benda objek. Setiap kata dikapitalisasi dan string harus ditandai sebagai diterjemahkan.

Jika tuple atau daftar - kemudian pengaturan self.current_present_action = n akan mengatur item aktif saat ini dari list(action_present[n])

action_past()

Metode mengembalikan nama aksi sebelumnya. Ini biasanya digunakan untuk menampilkan pesan ketika aksi selesai.

Metode harus menerima parameter integer/long dan mengembalikan bentuk tampilan nama yang benar-benar terwujud (tergantung pada integer) dan diterjemahkan dalam string atau tuple/list.

Detailnya sama dengan action_present.

success_url

Lokasi opsional untuk mengalihkan setelah menyelesaikan aksi penghapusan. Default ke halaman saat ini.

help_text

Pesan opsional untuk menyediakan teks bantuan yang sesuai untuk pengguna horizon.

action(request, obj_id)[sumber]

Titik masuk aksi. Menggantikan metode aksi kelas dasar.

Menerima satu objek id yang meneruskannya ke metode penghapusan yang bertanggung jawab atas penghancuran objek.

delete(request, obj_id)[sumber]

Wajib. Menghapus objek yang direferensikan oleh obj_id.

Ganti untuk menyediakan fungsi penghapusan khusus untuk data Anda.

Class-Based Views

Beberapa tampilan berbasis kelas disediakan untuk membuat bekerja dengan DataTable lebih mudah di UI Anda.

class horizon.tables.DataTableView(*args, **kwargs)[sumber]

Tampilan generik berbasis kelas untuk menangani pemrosesan DataTable dasar.

Tiga langkah diperlukan untuk menggunakan tampilan ini: atur atribut table_class dengan kelas yang diinginkan :class: ~ horizon.tables.DataTable; mendefinisikan metode get_data yang mengembalikan seperangkat data untuk tabel; dan tentukan templat untuk atribut template_name.

Secara opsional, Anda dapat mengganti metode has_more_data untuk memicu penanganan pagination untuk API yang mendukungnya.

class horizon.tables.MultiTableView(*args, **kwargs)[sumber]

Tampilan generik untuk menangani beberapa kelas DataTable dalam satu tampilan.

Setiap kelas DataTable harus berupa kelas :class: ~ horizon.tables.DataTable atau subkelasnya.

Tiga langkah diperlukan untuk menggunakan tampilan ini: atur atribut table_classes dengan tuple dari kelas yang diinginkan :class: ~ horizon.tables.DataTable; mendefinisikan metode get _ {{table_name}} _ data untuk setiap kelas tabel yang mengembalikan satu set data untuk tabel itu; dan tentukan templat untuk atribut template_name.

Additional Features

Compound sorting

In the Horizon dashboard, most tables that display lists of resources (such as instances, volumes, images, etc.) support sorting by clicking on the column headers.

To enable compound sorting, you can hold down the Shift key while clicking on additional column headers. This allows you to sort the table by multiple columns in the order you click them.

An up or down arrow indicator shows next to the column headers you chose to sort by.