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?

avatar fahrilcaweuy
@fahrilcaweuy

1 Kontribusi 1 Poin

Diperbarui 3 bulan yang lalu

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(&#039;success-url&#039;)

return render(request, &#039;dynamic_form.html&#039;)
avatar yukaristel
@yukaristel

36 Kontribusi 32 Poin

Dipost 3 bulan yang lalu

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 ? ?

Login untuk ikut Jawaban