Django Form – Menghubungkan Models dan Forms

Pada modul sebelumnya, data yang disubmit user hanya ditampilkan ke console. Bagaimana jika kita ingin menyimpan data tersebut kedalam model?

Hal tersebut dengan mudah dilakukan dalam Django.

Untuk membuat form yang dihubungkan dengan models, class form pada file forms.py harus diturunkan dari forms.ModelForm.

Sedikit berbeda dari form basic pada modul sebelumnya, forms models memerlukan inline class Meta, yang berguna untuk menghubungkan form dengna model.

Berikut struktur dasar menggunakan forms models.

Pendekatan pertama, tanpa mendefinisikan form fields. Django otomatis akan mengenerate form fields. Kekurangan dari pendekatan ini adalah tidak bisa menggunakan custom fields validation. Validation dilakukan pada models. Kelebihannya adalah simple dan secure karena sudah dihandle oleh Django.

Pendekatan ini lebih umum digunakan.

from django import forms
from myapp.models import MyModel

class MyNewForm(forms.ModelForm):

    class Meta:
        model = MyModel
        fields = #options_field_attribute

Pendekatan kedua, form fields didefinisikan manual. Kelebihannya dapat digunakan custom validation. Kekurangannya code lebih panjang dan fields security harus dipertimbangkan.

from django import forms
from myapp.models import MyModel

class MyNewForm(forms.ModelForm):
    #Form fields goes here
    class Meta:
        model = MyModel
        fields = #options_field_attribute

Untuk #options_field_attribute, terdapat beberapa options:

  • “__all__”, artinya seluruh fields pada model akan digunakan dalam form.
  • [“namafield1”, “namafield2”, …], artinya kita dapat memilih field yang TIDAK Akan digunakan dalam form.
  • (“namafield1”, “namafield2”, …), artinya kita dapat memilih field yang Akan digunakan dalam form.

Untuk informasi lebih lengkap lihat dokumentasi Django ModelForms https://docs.djangoproject.com/en/4.0/topics/forms/modelforms/

Sharing is caring:

Leave a Comment