gpt4 book ai didi

python - 直接从模板更新/保存模型日期值?

转载 作者:行者123 更新时间:2023-12-01 02:39:08 25 4
gpt4 key购买 nike

我对 Django 还很缺乏经验,我想知道是否可以直接从模板更新/保存今天的日期到我的数据库中?

我有一个 Django 过滤器 filterView (listView),它显示我的部门中当前数据库中的人员列表。我想通过单击列表中显示的 <\a> 链接将日期时间值(上次访问人员的时间)更新为今天的日期。这样我就不必设置更新 View 来更新我上次拜访同事的时间。这样的事情可能吗?

我确实尝试使用 @property 标签在 models.py 中实现一个函数,但是当我刷新网页或访问该页面时,它会自动更新它,而无需单击链接。

编辑:这是代码:

# 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 是否可行?或者我以错误的方式处理这个问题?任何帮助是极大的赞赏。非常感谢!

编辑:找到解决方案。我最终做的是创建一个基于函数的 View 来执行 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'))

我的模板网址调用了这个函数,效果很好。现在我需要看看如何将过滤后的结果保留在 HttpResponseRedirect 上。

最佳答案

始终必须有一个链接到模板的 View 。您需要连接一个 View 来执行您想要执行的 CRUD 操作。

如果您不想重新加载模板,可以使用对 View 的 AJAX 请求来执行 CRUD 操作。

在您的共享代码段中,您创建了一个更新 last_visit 的模型属性。

请注意,此模型的 last_visit 是在执行模板插值时更新的,而不是在单击链接时更新的,我认为这不是您想要的行为。

<a href="{{ contact.update_visit_date }}"> 

关于python - 直接从模板更新/保存模型日期值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45910006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com