我在Django中還很缺乏經驗,我想知道是否可以直接從模板更新/保存數據庫中的今日日期?更新/直接從模板保存模型日期值?
我有一個Django篩選filterView(列表視圖),它顯示我的部門中我目前在我的數據庫中的人員列表。我想通過點擊列表中顯示的< \ a>鏈接將日期時間值(上次訪問人員時)更新爲今天的日期。這樣我就不需要設置更新視圖來更新我上次訪問同事時的更新視圖。這是甚麼可能嗎?
我的確嘗試在我的models.py中使用@property標記實現一個函數,但是當我刷新網頁或訪問頁面時,它會自動更新它,而無需點擊鏈接。
編輯:這裏是代碼:
# models.py
@property
def update_visit_date(self):
self.last_visit = timezone.make_aware(datetime.datetime.today())
super(Directory, self).save()
return reverse('directory_list')
# snippet from my template directory_list.html
{% for contact in items %}
<tr>
<td>{{ contact.first_name }}</td>
<td>{{ contact.last_name }}</td>
<th><a href="{{ contact.get_absolute_url }}">{{ contact.email_address }}</a></th>
<td>{{ contact.phone_number_1 }}</td>
<td>{{ contact.get_department_display }}</td>
<td>{{ contact.room_number }}</td>
{% if contact.is_past_due == 'no_visit_performed' %}
<td class="info">{{ contact.last_visit }}<a href="{{
contact.update_visit_date }}"> {% bootstrap_icon "plus-sign" %}</a></td>
{% elif contact.is_past_due == 'visit_good' %}
<td class="success">{{ contact.last_visit }}<a href="{{
contact.update_visit_date }}"> {% bootstrap_icon "plus-sign" %}</a></td>
{% elif contact.is_past_due == 'visit_old' %}
<td class="warning">{{ contact.last_visit }}<a href="{{
contact.update_visit_date }}"> {% bootstrap_icon "plus-sign" %}</a></td>
{% elif contact.is_past_due == 'need_visit' %}
<td class="danger">{{ contact.last_visit }}<a href="{{
contact.update_visit_date }}"> {% bootstrap_icon "plus-sign" %}</a></td>
{% endif %}
</tr>
{% empty %}
這是不是這是可能的,從模板鏈接進行CRUD?還是我以錯誤的方式去做這件事?任何幫助是極大的讚賞。非常感謝你!
編輯:找到了一個決心。我最終做的是創建了一個執行CRUD的基於功能的視圖。這裏是代碼:
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
def last_visit_view(request, pk):
last_visit_obj = Directory.objects.filter(pk=pk)
if last_visit_obj:
last_visit_obj = last_visit_obj[0]
last_visit_obj.last_visit = datetime.now()
last_visit_obj.save()
return HttpResponseRedirect(reverse('directory_list'))
我的模板url調用這個函數,它的工作很好。現在我需要看看如何在HttpResponseRedirect上保留過濾結果。
謝謝你的評論,因爲它我能找到一個決心。我所能做的是創建一個執行CRUD的基於功能的視圖。我會用代碼編輯我的問題。 – TVH