Postingan lainnya
Kelas Premium!
Belajar bikin website dari nol sekarang
Gunakan kupon "lebihcepat" untuk diskon 25%!
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
saya ingin membuat field yang bisa di tambahkan dan di hapus pada django
jadi masalah yang saya alami adalah saya ingin membuat sebuah website dimana pada website ini terdapat field yang di tambahkan oleh pengguna(ibaratkan cms) namun saya bingung saya harus membuatnya bagaimana pada django, sebagai acuan saya melampirkan sebuah gambar gambar, pada gambar tersebut terlihat penambahkan field baru dengan memilih type datanya apa, nah saya juga ingin membuat seperti itu dengan menggunakan django, ada yang bisa bantu jawab?
1 Jawaban:
Mungkin bisa coba menggunakan library seperti django-dynamic-forms,, (silakan baca2 soalnya agak susah dijelasin di sini)
ato bisa coba menggunakan JSONField,, kira2 begini
Model Django
from django.db import models
class DynamicModel(models.Model):
title = models.CharField(max_length=255)
dynamic_fields = models.JSONField(default=dict, blank=True)
Form di Django
from django import forms
class DynamicForm(forms.Form):
title = forms.CharField(max_length=255)
JS di Frontend nya
<form id="dynamic-form" method="POST">
<input type="text" name="title" placeholder="Title" required>
<div id="dynamic-fields-container"></div>
<button type="button" onclick="addField()">Add Field</button>
<button type="submit">Submit</button>
</form>
<script>
function addField() {
const container = document.getElementById('dynamic-fields-container');
const input = document.createElement('input');
input.type = 'text';
input.name = 'dynamic_fields[]';
input.placeholder = 'Dynamic Field';
container.appendChild(input);
}
</script>
view.py
from django.shortcuts import render, redirect from .models import DynamicModel
def dynamic_form_view(request): if request.method == 'POST': title = request.POST.get('title') dynamic_fields = request.POST.getlist('dynamic_fields[]') # Format data ke dictionary atau format yang sesuai dynamic_data = {f'field_{i+1}': field for i, field in enumerate(dynamic_fields)}
DynamicModel.objects.create(title=title, dynamic_fields=dynamic_data)
return redirect('success-url')
return render(request, 'dynamic_form.html')
Tanggapan
ya saya memahaminya, namun disini saya sedikit kebingungan dalam mengimplementsikan data dengan model yang ingin saya berikan dynamic field ini.
saya punya sebuah analogi tolong cerna analogi ini benar atau salah jadi kan field ini isinya json ya, dimana saya bebas memasukan apapun itu sesui kebutuhan saya, nah pada tampilan HTML nya ,saya membuat form untuk membuat field nya contohnya seperti gambar yang sebelumnya saya lampirkan lah, kemudian field dynamic yang pada model saya buat displaynya none kecuali yang titlenya, pada jsnya yang saya buat saya membuat logika pada javascript untuk membuat json sesuai pengguna pilih contoh seperti ini
"section_1":
[
{
"nama_alias":{"class":"mb-20","name":"text","value":"value 1","placeholder":"Section placeholder"}
},
]
maka data yang ada di data base seperti ini, nah kemudian pada tampilan list user kan pasti nge get model user dong terus pas get di cek apakah field json ini ada atau tidak jika tidak ada pada table ga perlu di tambahkan row baru, tapi jika ada maka tambahkan row baru.
gimana betul ga ya?
iya,,, berarti alurnya kan kira2
field JSONField -> Form Dinamis di HTML -> Manipulasi Data dengan JavaScript -> Pengolahan Data di Backend (View Django) -> Menampilkan Data di List View -> Kondisional Menambah Row di Tabel
perlukah dituliskan Implementasi Pendekatannya ? ?