Muhammad Hafid

Janganlah malas untuk berkarya, biarpun sederhana tetapi bermanfaat bagi orang lain. Kerjakan dengan penuh kesabaran dan keikhlasan

Inline Into Inline or Nested Django Admin

Memang yang namanya menggunakan framework orang lain harus pintar pintar mendapatkan jalan pintas apabila pada pelaksanaan menemukan variasi yang aneh aneh. Bertahap saya coba jelaskan yang dimaksud agar hasilnya seperti pada gambar dibawah ini :


Coba kalian perhatikan didalam sebuah TABULASI ada 1 primary inline dengan nama Contact, dan contact mempunyai inline bernama phone, email, dan idcard.
Yang menjadi permasalahan adalah saya mengguakan Tabulasi dan jika tanpa tambahan plugin custom inline pemberian inline tidak akan tampil.

Struktur Modelnya seperti ini guys jika kalian masih bingung :
  • Account 
    • Contact Info (Tab Ke-1)
    • Contact Person (Tab Ke-2)
      • Contact (Modul Contact inline terhadap account)
        • Phone (inline terhadap inline contact yang terinline account)
        • Email (inline terhadap inline contact yang terinline account)
        • Id Card (inline terhadap inline contact yang terinline account)
    • Profil (Tab Ke-3)
Saya menggunakan SuperInlineModelAdmin berhasil membuat skema modul data seperti di atas.

Tetapi untuk yang TIDAK MENGGUNAKAN TABULASI BERINLINE tidak ada masalah seperti pada gambar di bawah ini :


  • Contact
    • Contact Info (Tab Ke-1 = Modul)
      • Phone
      • Email
      • IdCard
Oke membuat inline into inline didalam sebuah tabulasi. Pertama install superInlineAdmin dengan cara :
  • pip install django-super-inlines
  • Add 'super_inlines', to INSTALLED_APPS before 'django.contrib.admin',
Sekarang masuk kedalam admin.py kalian dan tambahkan baris dibawah ini :
from django.contrib.admin import TabularInline, StackedInline, site
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
Sekarang coba perhatikan logika contoh dibawah ini :
class RoomInlineAdmin(SuperInlineModelAdmin, TabularInline):
    model = Room

class HouseInlineAdmin(SuperInlineModelAdmin, StackedInline):
    model = House
    inlines = (RoomInlineAdmin,)

class OwnerAdmin(SuperModelAdmin):
    inlines = (HouseInlineAdmin,)

site.register(Owner, OwnerAdmin)
Keterangan logika :
  • OwnerAdmin = Induknya, dalam contoh diatas punya saya adalah Account
  • HouseInlineAdmin = Owner mempunya rumah yang didalam rumah ada beberapa kamar, dalam contoh saya diatas adalah Contact
  • RoomInlineAdmin = Inline dari Inline House, artinya beberapa rumah ada di beberapa kamar, dalam contoh saya diatas adalah phone, email dan idcard.
Bagaimana sudah paham ?? lalu bagaimana jika di owneradmin nya menggunakan plugin tabbed seperti punya saya, rubah seperti dibawah ini :
class OwnerAdmin(SuperModelAdmin, TabbedModelAdmin):
Bagaimana masih bingung ? jika pluginnya lebih dari 2, saya kebetulan punya 3 plugin, yan tinggal tambahkan saja :
class OwnerAdmin(SuperModelAdmin, VersionAdmin, TabbedModelAdmin):
Contoh diatas saya menggunakan plugin VersionAdmin dan TabbedModelAdmin.
Semoga bermanfaat.
Labels: Django , python

Thanks for reading Inline Into Inline or Nested Django Admin . Please share...!

0 Comment for "Inline Into Inline or Nested Django Admin"

Terima kasih sudah berkunjung ke blog saya, semoga informasi nya bermanfaat buat anda.

Back To Top