哪里有问题呢? 点击次数:{{msg.clickcount}} 总是为:0 django1.5 代码如下
models.py:
class Msg(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
user = models.ForeignKey(User)
ip = models.IPAddressField()
datetime = models.DateTimeField(auto_now_add=True)
clickcount = models.IntegerField(default=0)
def __unicode__(self):
return u'用户%s发表的标题为%s的留言' % (self.user.username, self.title)
class Meta:
verbose_name_plural = u'留言信息'
class msg_detail_page(DetailView):
model = Msg
def m_d_p(request, pk):
msg = get_object_or_404(Msg, id=pk)
msg.clickcount +=1
msg.save()
url(r'^detail/(?P<pk>\d+)/$', msg_detail_page.as_view(
template_name='message/msg_detail_page.html'
)),
{% extends "base.html" %}
{#{% load comments %}#}
{% block title %}留言内容与评论{% endblock %}
{% block head %}留言内容与评论{% endblock %}
{% block content %}
<table class="msglist">
<tr align="left">
<th>留言人:{{ msg.user.username }}</th>
<th>留言时间:{{ msg.datetime|date:"Y-m-d H:i" }}</th>
<th>IP地址:{{msg.ip }}</th>
<th>点击次数:{{msg.clickcount}}</th>
</tr>
<tr>
<td colspan="3"><b>{{ msg.title }}</b></td>
</tr>
<tr>
<td colspan="3">{{ msg.content }}</td>
</tr>
</table>
{% endblock %}
我是django1.5+python2.7
多谢
[解决办法]
class-based view 应该实现method(get, post...)的方法,不是重新定义view.
class msg_detail_page(DetailView):
model = Msg
def get(self, request, *args, **kwargs):
msg = get_object_or_404(Msg, id=pk)
msg.clickcount +=1
msg.save()
super(msg_detail_page, self).get(request, *args, **kwargs)
[解决办法]
m_d_p是你自定义的函数?不知道你从哪里抄来的!
你应该重载DetailView的get_object函数
def get_object(self):
# Call the superclass
object = super(msg_detail_page, self).get_object()
# Record the last accessed date
object.clickcount +=1
object.save()
# Return the object
return object