Django - Позволяет пользователю выбрать несколько записей из базы данных и использовать эти данные на следующей странице
Я хочу создать ListView, в котором пользователь может выбрать определенные записи базы данных (см. изображение ниже).
Затем данные, связанные с этими элементами, будут использоваться для построения графиков. Как создать форму, в которой можно выбирать элементы ListView?
До сих пор я могу создавать дополнительные записи базы данных в CsvCreateView, но я не знаю, как сделать форму в ListView, где можно выбирать записи. Кто-нибудь может мне помочь?
Код:
models.py:
class CsvCreate(models.Model):
file_name = models.FileField(upload_to='csvs')
uploaded = models.DateTimeField(auto_now_add=True)
selected = models.BooleanField(default=False)
def __str__(self):
return f"File id: {self.id}, uploaded at {self.uploaded}, activated: {self.activated}"
def save_csvs(self):
obj = self
with open(obj.file_name.path, 'r') as f:
reader = csv.reader(f)
values = [obj]
dict_list = []
for i, row in enumerate(reader):
if i < 3:
pass
else:
for i in range(0,len(row)):
values.append(row[i])
data_dict = dict(zip(parameters.parameters, values))
dict_list.append(data_dict)
values = [obj]
django_list = [Data(**vals) for vals in dict_list]
Data.objects.bulk_create(
django_list
)
obj.activated = True
obj.save()
views.py:
class CsvCreateView(View):
model = CsvCreate
form_class = CsvModelForm
success_url = reverse_lazy('csvs:list_csvs')
template_name = 'csvs/upload.html'
def get(self, request):
form = self.form_class()
context = {'form': form}
return render(request, self.template_name, context)
def post(self, request):
form = self.form_class(request.POST or None, request.FILES or None)
if form.is_valid():
csv_create = form.save()
csv_create.save_csvs()
else:
print(form.errors)
return redirect(self.success_url)
class CsvListView(ListView):
# CsvCreate_list.html
model = CsvCreate
context_object_name = 'csv_list'