任務的修改功能主要是進入任務內部,進行實施步驟的添加功能,並對一些內容進行更改,例如,聯繫人方式等。
1.通過views.py建立編輯任務函數:
#任務的編輯
def task_edit(request, pk):
#獲取相關任務實例
task_ins = get_object_or_404(Task, pk=pk)
#如果收到了相應的POST提交
if request.method == 'POST':
#任務聯繫人爲可編輯選項,並填充原先的任務聯繫人
task_ins.task_contacts = request.POST['task_contacts']
task_ins.save()
#通過所在task_id獲取task對象
process_task = Task.objects.get(id = task_ins.id)
#如果獲取的實施步驟內容不爲空,建立process對象,並增加相關信息
if request.POST['process_content'].strip(' ') != '':
process_ins = Process()
process_ins.task = process_task
process_ins.process_content = request.POST['process_content'].strip(' ')
process_ins.process_signer = request.user
process_ins.save()
return redirect('task_edit', pk=task_ins.id)
context = {
'task': task_ins,
'user': str(request.user),
'sub_title': '編輯任務',
}
return render(request, 'task_edit.html', context)
2.建立task_edit.html:
{% extends "index.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block page_title %}
任務處理
{% endblock %}
{% block container %}
<div class="row">
<div class="col-sm-12 pull-left">
<!---任務基礎信息 BEGIN--->
<!----需要提交的內容,放於form中---->
<div class="col-sm-4 pull-left">
<div id="div_id_task_title" class="form-group">
<label for="id_task_title" class="control-label"><strong>任務名稱</strong></label>
<div class="controls">
<label for="id_task_title" class="control-label">{{ task.task_title }}</label>
<label for="id_task_category" class="control-label">[</label>
{{ task.task_category }}<label>]</label>
</div>
</div>
<form method='POST' action='{% url 'task_edit' pk=task.id %}'>{% csrf_token %}
<div id="div_id_task_contacts" class="form-group">
<label for="id_task_contacts" class="control-label"><strong>聯繫人員</strong></label>
<div class="controls ">
<textarea class="textarea form-control" id="id_task_contacts" name="task_contacts" rows="2" {% if task.task_status == '已結單' %}readonly="readonly"{% endif %}/>{{ task.task_contacts }}</textarea>
</div> </div>
<div id="div_id_task_member" class="form-group">
<label for="id_task_member" class="control-label requiredField"><strong>實施人員</strong></label>
<div class="controls "> <input class="textinput textInput form-control" id="id_task_member" maxlength="255" name="task_member" type="text" value="{% for member in task.task_member.all %}{{ member }} {% endfor %} " readonly/> </div> </div>
<!---任務基礎信息 END--->
<!--如果任務的狀態是處理中,那麼以下按鈕正常出現,如果是其他狀態,那麼這些按鈕不出現-->
<br/><br/>
{% if task.task_status == '處理中' %}
<!-- 新增處理過程 BEGINS -->
<label for="id_process_content" class="control-label">
新增處理過程 </label>
<div class="controls ">
<textarea class="textarea form-control" id="id_process_content" name="process_content" rows="10">
</textarea>
</div>
<!--如果在處理中,那麼顯示'提交'及'取消'按鈕--->
<input class='btn btn-primary' type='submit' value='提交' />
<a href="{% url 'task_list' %}">
<input class='btn btn-default' type='button' value='取消' /></a>
{% else %}
<!--如果任務已經結束,那麼僅顯示'返回'按鈕--->
<a href="{% url 'task_list' %}">
<input class='btn btn-default' type='button' value='返回' /></a>
{% endif %}
</form></div>
</div>
</div>
{% include 'modal.html' %}
{% endblock %}
{% block page_javascript %}
{% include 'modal_js.html' %}
{% endblock %}
3.增加一條記錄,並進入修改頁面查看結果:增加一條任務記錄
點擊修改,進入修改內容
4.增加任務的刪除功能,參照之前的方式,通過modal方式進行刪除。首先,在views.py中增加相應的刪除功能。
Views.py:
#任務列表的任務刪除
def task_delete(request, pk):
#獲取選定的task實例
task_ins = get_object_or_404(Task, pk=pk)
#如果接收到了刪除的POST提交,則刪除相應條目
if request.method == 'POST':
try:
task_ins.delete()
#刪除成功,則data信息爲success
data = 'success'
except IntegrityError:
#如因外鍵問題,或其他問題,刪除失敗,則報error
data = 'error'
#將最後的data值傳遞至JS頁面,進行後續處理,safe是將對象序列化,否則會報TypeError錯誤
return JsonResponse(data, safe=False)
5.嘗試將創建記錄刪除