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.
Fitur
- Menyediakan data wilayah Indonesia secara lengkap
- Mendukung proses seeding ke database
- Tersedia form chained untuk diimplementasikan pada form Admin site atau form custom
- Tersedia endpoint REST API
Instalasi
Via PIP
pip install django-wilayah-indonesia
Manual
-
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.
-
Install dependencies
pip install django-select2
Setelah berhasil lakukan
-
Registrasi App
INSTALLED_APPS = [ .... 'wilayah_indonesia' .... ] -
Migrate
./manage.py migrate -
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_wilayah_indonesia-0.1.4.tar.gz.
File metadata
- Download URL: django_wilayah_indonesia-0.1.4.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d4614b821959ec63116043c9a31515557bcd167c7a4f689e3ca2e37b01c91c5
|
|
| MD5 |
84233961288628567e9de3f2b1ceb1ac
|
|
| BLAKE2b-256 |
b2c65ae94edf558d2cf74a953d0e1f2f39ad59f51922d2f973cc428837ec51ba
|
File details
Details for the file django_wilayah_indonesia-0.1.4-py3-none-any.whl.
File metadata
- Download URL: django_wilayah_indonesia-0.1.4-py3-none-any.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1db6ca5ad1348681a0fbf6155f0cd92bacc55d5a8498f9c07a0544bcf0c2e7e
|
|
| MD5 |
42882af13cfe7c83dfb53e324f8a8d4e
|
|
| BLAKE2b-256 |
4dbada6b118d39c2434258eb86ccd8edf3474cef37a96af714d687c57bb5b333
|