Можно ли, ипользуя Django, создать сразу несколько записей в БД не перезагружаю страницу?
изучаю python/django, и столкнулся с одной проблемой. Выбираю объект на странице для которого буду создавать различные характеристики (поля модели заполнять). Если сделать по простому, нажать "создать"=>"заполнить и отправить форму", то это будет только одна созданная запись в БД, а возможно ли сразу создать например 50 записей на одной странице? Или как это обыграть по другому можно? Использую sqlite. А еще доп. вопрос, возможно ли открыть список данных, подгруженный из БД в виде таблице и редактировать любую запись в таблице, не переходя на отдельную страницу для редактирования, а сразу в самой таблице, а после сделанных изменений, нажать например "сохранить", т.е. чтобы была возможность просмотра и редактирования сразу на одной странице. Спасибо.
Не совсем понятен вопрос, но предположу, что ты хочешь на одной странице заполнить несколько форм для нескольких моделей
class AddressForm(forms.ModelForm):
class Meta:
model = Address
fields = ["city", "street", "numb"]
class ProjectForm(forms.ModelForm):
class Meta:
model = Project
fields = ["file", "sq", "rent_tax"]
class ProjectDetailForm(forms.ModelForm):
class Meta:
model = ProjectDetail
exclude = ['created_at']
Views
def add_project(request):
form_address = AddressForm(request.POST or None)
form_project = ProjectForm(request.POST or None)
form_detail = ProjectDetailForm(request.POST or None)
if request.method == 'POST':
if form_address.is_valid() and form_project.is_valid() and form_detail.is_valid():
address_clean = form_address.cleaned_data
project_clean = form_project.cleaned_data
detail_clean = form_detail.cleaned_data
Address.objects.update_or_create(**address_clean)
p = Project.objects.update_or_create(
manager = request.user,
file = project_clean['file'],
sq = project_clean['sq'],
rent_tax = project_clean['rent_tax']
)
ProjectDetail.objects.create(
project = p,
**detail_clean
)
return redirect("crm:homepage")
context = {'form_address':form_address, 'form_project':form_project, 'form_detail':form_detail,}
return render(request, 'add_project.html', context)
Template
{% block content %}
{% load crispy_forms_tags %}
{% csrf_token %}
{{ form_address|crispy}}
{{ form_project|crispy }}
{{ form_detail|crispy }}
{% endblock %}