我有一个带有用于跟踪进入/离开时间的表单的页面。目前,有错误的条目(缺少输入或退出)会从 views.py 中标记出来。我根据给定的一些模板创建了一个模态,但我不知道如何从 views.py 调用它。
基本上,在提交被标记为“N”后,需要出现模式,要求用户提供一个值。现在模态只是说“嗨”,因为我试图让它首先出现,然后再深入研究它的功能。
下面是我的 views.py,并附有对需要发生模态调用的位置的评论。我不确定如何在这部分的逻辑中呈现它。
视图.py
class EnterExitArea(CreateView):
model = EmployeeWorkAreaLog
template_name = "operations/enter_exit_area.html"
form_class = WarehouseForm
def form_valid(self, form):
emp_num = form.cleaned_data['employee_number']
area = form.cleaned_data['work_area']
station = form.cleaned_data['station_number']
if 'enter_area' in self.request.POST:
form.save()
EmployeeWorkAreaLog.objects.filter((Q(employee_number=emp_num) & Q(work_area=area) & Q(time_out__isnull=True) & Q(time_in__isnull=True)) & (Q(station_number=station) | Q(station_number__isnull=True))).update(time_in=datetime.now())
# If employee has an entry without an exit and attempts to enter a new area, mark as an exception 'N'
if EmployeeWorkAreaLog.objects.filter(Q(employee_number=emp_num) & Q(time_out__isnull=True) & Q(time_exceptions="")).count() > 1:
first = EmployeeWorkAreaLog.objects.filter(employee_number=emp_num, time_out__isnull=True).order_by('-time_in').first()
EmployeeWorkAreaLog.objects.filter((Q(employee_number=emp_num) & Q(time_out__isnull=True))).exclude(pk=first.pk).update(time_exceptions='N')
# Here's where the modal would need to be called because the record was flagged
return HttpResponseRedirect(self.request.path_info)
class UpdateTimestampModal(CreateUpdateModalView):
"""
Modal to request estimated entry/exit time for manager approval
"""
main_model = EmployeeWorkAreaLog
model_name = "EmployeeWorkAreaLog"
form_class = WarehouseForm
template = 'operations/modals/update_timestamp_modal.html'
modal_title = 'Update Timestamp'
网址.py
urlpatterns = [
url(r'enter-exit-area/$', EnterExitArea.as_view(), name='enter_exit_area'),
url(r'update-timestamp-modal/(?P<main_pk>\d+)/$', UpdateTimestampModal.as_view(), name='update_timestamp_modal'),
]
enter_exit_area.html
{% extends "base.html" %}
{% load core_tags %}
{% block main %}
<form id="warehouseForm" action="" method="POST" novalidate >
{% csrf_token %}
<div>
<div>
{{ form.employee_number }}
</div>
<div>
{{ form.work_area }}
</div>
<div>
{{ form.station_number }}
</div>
</div>
<div>
<div>
<button type="submit" name="enter_area" value="Enter">Enter Area</button>
<button type="submit" name="leave_area" value="Leave">Leave Area</button>
</div>
</div>
</form>
{% modal id="create-update-modal" title="Update Timestamp" primary_btn="Submit" default_submit=True %}
{% endblock main %}
update_timestamp_modal.html
{% load core_tags %}
<form id="create-update-form" method="post" action="{% url "operations:update_timestamp_modal" main_object.id %}">
{% csrf_token %}
<label>UPDATE TIMESTAMP</label>
<div class="row">
<div class="form-group col-xs-6">
<h1>Hi!!</h1>
</div>
</div>
</form>
我在一些关于模态的文档中发现了这一点,这些文档似乎与调用它打开相关,以防万一:
所以模态模板标签基本上会呈现一个空模态,然后当你调用 ajaxOpen 时,你可以指定一个 URL,它将呈现将进入空模态的动态 HTML。因此,在这种情况下,您可能希望在通话中使用以下内容:
modals.ajaxOpen($('#create-update-modal'), undefined, $('#some-hidden-div').data('url'), function() {alert("it worked yay");});
假设您将 url 放在 html 中某个隐藏的 div 中,因为您不想只是在 JS 中对其进行硬编码,但是该 url 也可以从其他 ajax 调用或其他任何地方返回
不得不切换到基于函数的视图。为了呈现模态,在 views.py 中创建了一个呈现的变量,如果它退出,那么它会从主 html 调用模态。
return render(request, "operations/enter_exit_area.html", {
'form': form,
'enter_without_exit': enter_without_exit,
'exit_without_enter': exit_without_enter,
})
如果 enter_without_exit 和 exit_without_enter 从 views.py 逻辑返回 None 以外的任何内容,则它们呈现两种类型的模态
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句