Jquery 使用Django ModelForm创建模态表单的混淆
我正在尝试为一个web应用程序创建一个弹出表单,医生在其中选择一个期刊(研究/科学期刊名称)并输入一些信息,然后将其添加到显示该信息的组件列表中。我试图将用于他们将日志信息输入到弹出式表单中的表单抽象出来,我对添加此功能所需的工作量感到非常惊讶。我是一个Bootstrap的初学者,我正在使用它,因为很显然,要让Bootstrap modals与Django一起工作几乎是不可能的。以下是对库指定的相关文件的代码更改——我已将它们的“createbook”替换为“createjournalentry”等 虽然有很多代码,但它实际上是一个非常简单的应用程序,而且无法让modals与ModelForm一起工作已经让我沮丧了一个多星期 型号.pyJquery 使用Django ModelForm创建模态表单的混淆,jquery,django,twitter-bootstrap,bootstrap-modal,modelform,Jquery,Django,Twitter Bootstrap,Bootstrap Modal,Modelform,我正在尝试为一个web应用程序创建一个弹出表单,医生在其中选择一个期刊(研究/科学期刊名称)并输入一些信息,然后将其添加到显示该信息的组件列表中。我试图将用于他们将日志信息输入到弹出式表单中的表单抽象出来,我对添加此功能所需的工作量感到非常惊讶。我是一个Bootstrap的初学者,我正在使用它,因为很显然,要让Bootstrap modals与Django一起工作几乎是不可能的。以下是对库指定的相关文件的代码更改——我已将它们的“createbook”替换为“createjournalentry
from django.db import models
from datetime import date
from django import forms
from bootstrap_modal_forms.forms import BSModalForm
JOURNAL_NAME_CHOICES = [
('NEJM', 'New England Journal of Medicine'),
('JVS', 'Journal of Vascular Surgery'),
]
# Create your models here.
class JournalEntry(models.Model):
name = models.CharField(
null=False,
choices=JOURNAL_NAME_CHOICES,
max_length=256)
renewal_date = models.DateField(
verbose_name="Date of Renewal",
auto_now=False,
auto_now_add=False,
blank=True,
null=True,
)
sub_cost = models.FloatField(
blank=True,
null=False,
max_length=6,
verbose_name='Subscription Cost',
)
def __str__(self):
return self.name
class JournalEntryForm(BSModalForm):
"""Form definition for JournalEntry."""
class Meta:
"""Meta definition for JournalEntryform."""
model = JournalEntry
fields = ('name', 'renewal_date', 'sub_cost')
视图.py
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from .models import JournalEntry, MembershipEntry, JOURNAL_NAME_CHOICES, MEMBERSHIP_NAME_CHOICES, JournalEntryForm, MembershipEntryForm
# from .forms import JournalForm
from django.urls import reverse_lazy
from bootstrap_modal_forms.generic import BSModalCreateView
# Create your views here.
def subsmems(request):
all_journal_entries = JournalEntry.objects.all()
# all_membership_entries = MembershipEntry.objects.all()
# all_journal_names = [x[1] for x in JOURNAL_NAME_CHOICES]
# all_membership_names = [x[1] for x in MEMBERSHIP_NAME_CHOICES]
form = JournalEntryForm()
context = {
'all_journal_entries': all_journal_entries,
# 'all_membership_entries': all_membership_entries,
'form': form,
}
if request.method == 'POST':
# create, check, process data from form, redirect
context['form'] = JournalEntryForm(request.POST)
if context['form'].is_valid:
context['form'].save()
return render(request, './subs/subsmems.html', context)
else:
return render(request, './subs/subsmems.html', context)
class JournalEntryCreateView(BSModalCreateView):
template_name = './subs/create_journalentry.html'
form_class = JournalEntryForm
success_message = 'Success: Journal Entry was created.'
success_url = reverse_lazy('./subs/subsmems.html')
url.py(用于SUB应用程序)
subsmems.html(这是我列出日记账条目的“索引”页面——我对从哪个目录/链接什么以及如何链接感到非常困惑)
{%load static%}
{%include./modal.html%}
添加日志
{%如果所有日记账分录%}
{所有日记账分录中的分录百分比}
{{entry.get_name_display}
您每年支付${entry.sub_cost}}
于{entry.renewal_date}到期续约
{%endfor%}
{%endif%}
$(文档).ready(函数(){
$(“.create journalentry”).modalForm({
formURL:“{%url'%}”
});
});
最后,接下来的两个将直接从库设置站点上删除,并进行一些小的修改:
modal.html
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
<form method="post" action="{% url 'subsmems' %}">
{% csrf_token %}
<div class="modal-header">
<h5 class="modal-title">Add Journal</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
{% for field in form %}
<div class="form-group{% if field.errors %} invalid{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{{ field }}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endfor %}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="submit-btn btn btn-primary">Create</button>
</div>
</form>
情态标题
&时代;
...
接近
保存更改
create_journalentry.html
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
<form method="post" action="{% url 'subsmems' %}">
{% csrf_token %}
<div class="modal-header">
<h5 class="modal-title">Add Journal</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
{% for field in form %}
<div class="form-group{% if field.errors %} invalid{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{{ field }}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endfor %}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="submit-btn btn btn-primary">Create</button>
</div>
</form>
{%csrf_令牌%}
添加日志
&时代;
{%形式的字段为%}
{{field.label}
{{field}}
{%字段中有错误。错误%}
{{error}
{%endfor%}
{%endfor%}
接近
创造