Skip to main content

A simple Django app to provide Indonesia region

Project description

Wilayah Indonesia

Aplikasi ini menyediakan data wilayah administratif Indonesia (provinsi, kabupaten/kota, kecamatan, dan desa) yang dapat digunakan untuk kebutuhan input pada Admin site, form custom, REST API.

admin-site

Fitur

  • Menyediakan data wilayah Indonesia secara lengkap
  • Mendukung proses seeding ke database
  • Tersedia form chained untuk diimplementasikan pada form Admin site atau form custome
  • Tersedia endpoint REST API

Instalasi

  1. Clone repository

    • Unduh zip dan extrak dalam direktori proyek
    • Atau masuk dalam direktori proyek kamu lalu clone repositori ini
    git clone https://github.com/irfanpule/data-wilayah-indonesia.
    
  2. Install dependencies

    pip install django-select2
    
  3. Migrate

    ./manage.py migrate
    
  4. Register URL Registrasikan url django-select2 dan wilayah_indonesia

    path('wilayah-indonesia/', include('wilayah_indonesia.urls')),
    path('select2/', include('django_select2.urls'))
    

Seeding Data Wilayah

Jalankan perintah berikut untuk melakukan seeding data wilayah ke database:

./manage.py region_seeding

Atau jika hanya ingin menjalankan seeder wilayah:

./manage.py region_seeding --provinsi
./manage.py region_seeding --kabupaten
./manage.py region_seeding --kecamatan
./manage.py region_seeding --desa

Untuk menghapus data gunakan command ini

./manage.py region_seeding --delete

Model

Contoh kode:

from wilayah_indonesia.models import WilayahDisplayMixin

class Profile(WilayahDisplayMixin, models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    nik = models.CharField(max_length=16, unique=True)
    # field lainnya....
    provinsi = models.ForeignKey("wilayah_indonesia.Provinsi", on_delete=models.SET_NULL, null=True, blank=True)
    kabupaten = models.ForeignKey("wilayah_indonesia.Kabupaten", on_delete=models.SET_NULL, null=True, blank=True)
    kecamatan = models.ForeignKey("wilayah_indonesia.Kecamatan", on_delete=models.SET_NULL, null=True, blank=True)
    desa = models.ForeignKey("wilayah_indonesia.Desa", on_delete=models.SET_NULL, null=True, blank=True)
    # field lainnya ....

    def __str__(self):
        return self.nik

Disediakan class mixin untuk mempermudah akses nama dari masing-masing wilayah. Cukup gunakan WilayahDisplayMixin kamu dapat dengan mudah akses nama wilayah seperti ini: get_provinsi_display(), get_kabupaten_display(), get_kecamatan_display, get_desa_display().

NB: Disarakan nama field tetap menggunakan provinsi, kabupaten, kecamatan, desa agar fungsi mixin bekerja

Form

Sudah tersedia tersedia class mixin untuk form select2 chained dapat dilihat pada wilayah_indonesia/forms.py

  • Gunakan fungsi chiined yang sudah disediakan untuk membuat select chained pada form. Contoh
# Form -------
# Implementasi fungsi chained pada form
from wilayah_indonesia.forms import WilayahChainedFormMixin

class ProfileAdminForm(WilayahChainedFormMixin, forms.ModelForm):
    class Meta:
        model = Profile
        fields = '__all__'


# Admin site -------
# Implementasi form pada admin site
@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
    list_display = ('user', 'nik', 'no_ponsel', 'jenis_kelamin')
    # atribute lainnya ....
    form = ProfileAdminForm  # tambahkan form disini

Endpoint

  • Untuk mendapatkan data provinsi
{{base_url}}/wilayah-indonesia/provinsi/
  • Untuk mendapatkan data kabupaten harus menambahkan id provinsi pada url
{{base_url}}/wilayah-indonesia/kabupaten/18/
  • Untuk mendapatkan data kecamatan harus menambahkan id kabupaten pada url
{{base_url}}/wilayah-indonesia/kecamatan/1809/
  • Untuk mendapatkan data desa harus menambahkan id kecamatan pada url
{{base_url}}/wilayah-indonesia/desa/1809050/
  • Untuk melakukan filter atau search data cukup menambahkan query param pada url {{uri}}/?search=way. Berlaku untuk semua endpoint

Lisensi

MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_wilayah_indonesia-0.1.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_wilayah_indonesia-0.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file django_wilayah_indonesia-0.1.0.tar.gz.

File metadata

  • Download URL: django_wilayah_indonesia-0.1.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.14

File hashes

Hashes for django_wilayah_indonesia-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9e2de09cb22e6f4439b7b35adbb6d637e02381c871f14552f6e8855d8e10c6fe
MD5 089195c3184427dc435d17f3fbf0d4ed
BLAKE2b-256 bfb30e469828eaf97e1c2425a9e2f30540d5d8b10e9b9bbd3cf155bd03c7de37

See more details on using hashes here.

File details

Details for the file django_wilayah_indonesia-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_wilayah_indonesia-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13b42f867e8fdfccb9959b78b400e26a95adc82bc6ef2d40391f0cfb413577ea
MD5 1232444dcde103c46af54e181eb30805
BLAKE2b-256 13e193c541ceba5d7239fc46fe284b970d5e2fc1215c1018a834e0d3e9b4d210

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page