Как создать форму Django (имена и элементы) из столбца фрейма данных или столбца набора запросов.?

Как я могу создать форму, даже если это не форма Django, а обычная форма с помощью ввода? Чтобы имена и элементы полей формы были взяты из столбца фрейма данных или столбца набора запросов. Я бы хотел, чтобы поля формы не задавались изначально, а были результатом обработки данных - в виде данных из столбца фрейма данных или столбца набора запросов. Название полей формы для заполнения на основе данных в представлениях.

Может быть, отправить список или один фрейм данных или набор запросов в шаблон через JINJA?

from django import forms
  
# creating a form 
class InputForm(forms.Form):
  
    first_name = forms.CharField(max_length = 200)
    last_name = forms.CharField(max_length = 200)
    roll_number = forms.IntegerField(
                     help_text = "Enter 6 digit roll number"
                     )
    password = forms.CharField(widget = forms.PasswordInput())

from django.shortcuts import render
from .forms import InputForm
  
# Create your views here.
def home_view(request):
    context ={}
    context['form']= InputForm()
    return render(request, "home.html", context)

<form action = "" method = "post">
    {% csrf_token %}
    <table>
        {{ form.as_table }}
    </table>
    <input type="submit" value="Submit">
</form>

Как создать форму Django (имена и элементы полей формы) из столбца фрейма данных или столбца набора запросов.?

Вот как вы можете сгенерировать форму, используя список имен столбцов.

# Create your views here.
def home_view(request):
    context ={}
    context['fields']= ['column1', 'column2', ... ]
    return render(request, "home.html", context)


# home.html
<form>
{% csrf_token %}
{% for name in fields %}
  <label for="{{ name }}">{{ name }}</label>
  <input type="text" name="{{ name }}">
{% endfor %}
</form>

А чтобы получить имена столбцов из набора запросов или фрейма данных, вы можете сделать что-то вроде этого

# from queryset
context['fields'] = list(your_model.objects.all().values()[0])

# or from dataframe
context['fields'] = list(your_dataframe.columns.values)
Вернуться на верх