Senin, 26 April 2021

Multiple Insert Django

Django memiliki sebuah kode sihir yakni formset untuk membuat formulir baik satu ataupun lebih dalam satu halaman. Sehingga kita tak terlalu membuat perulangan sendiri untuk membuat banyak form dalam sekali klik.

Tetapi sebelum memakai kode formset ini kita mesti membuat file form yang akan disimpan di kode formset kita.

Ubahlah file model.py menjadi

from django.db import models

class Formulir(models.Model):

judul = models.CharField(max_length= 50)

deskripsi = models.CharField(max_length=1000)

Mari kita buat file form.py yang berisi kode dibawah ini.

from django import forms

from .models import Formulir

class FormulirForm(forms.ModelForm):

class Meta:

model = Formulir

fields = '__all__'

Saya akan jelaskan kode diatas ini. 'model' merupakan model yang kita gunakan untuk menyimpan, memodifikasi dan menghapus data yang kita gunakan. sedangkan 'fields' merupakan nama coloum yang digunakan. Saya menggunakan kode '__all__' untuk menggunakan semua column yang ada.

Setelah itu mari kita rubah file view.py menjadi


from django.shortcuts import render

# mengimport FormulirForm

from .forms import FormulirForm

# mengimport formset_factory

from django.forms import formset_factory

def formset_view(request):

    context ={}

    # buat sebuah formset

    FormulirFormSet = formset_factory(FormulirForm) 

    formset = FormulirFormSet()

    # tambahkan array context untuk dirender

    context['formset']= formset 

    return render(request, "index.html", context)


Kemudian buat file index.html pada file templates yang memiliki isi


<h3>Formulir Dengan Formset</h3>

<form method="POST" enctype="multipart/form-data"> 

    {% csrf_token %}

    <table class='table'>

    {{ formset.as_table }}

    </table>

    <input type="submit" value="Masukan Formulir">

</form>



Bila berhasil maka akan tampil tabel formulirnya.

Cara Membuat Multiple Insert

Kita hanya cukup menambahkan kode 'extra=5' untuk menambahkan 5 formulir tersebut dengan mengubah baris ke 9 menjadi


FormulirFormSet = formset_factory(FormulirForm, extra=5) 


Karena kita menginput banyak data dalam sekali klik maka kita membutuhkan kode '{{ formset.management_data }}' pada template index.html.


Setelah tahapan ini selesai maka data yang kita masukan di dalam formulir akan kita simpan ke dalam database kita dengan mengganti file view kita:


from django.shortcuts import render

# mengimport FormulirForm

from .forms import FormulirForm

# mengimport formset_factory

from django.forms import formset_factory

def formset_view(request):

    context ={}

    # buat sebuah formset

    FormulirFormSet = formset_factory(FormulirForm,extra=5)

    if request.method == 'POST':

   formset = FormulirFormSet(request.POST, request.FILES or None)

if formset.is_valid():

for form in formset:

if form.is_valid():

form.save()

else:

formset = FormulirFormSet()

    # tambahkan array context untuk dirender

    context['formset']= formset 

    return render(request, "index.html", context)



Silahkan periksa di halaman admin django, bila semua tahapan ini benar maka data-data  akan tersimpan di database kita.

Tidak ada komentar:

Posting Komentar