如何在同一日期显示创建的动作?

时间:2013-12-23 17:47:46

标签: django orm

我有新闻源的动作模型。像这样:

class Action(models.Model):
    actor = models.ForeignKey(User)
    target_object_id = models.PositiveIntegerField()
    target_content_type= models.ForeignKey(
                ContentType,
                related_name='target'
        )
    target = generic.GenericForeignKey(
                'target_content_type',
                'target_object_id'
        )
    verb = models.CharField(max_length=200)
    date = models.DateTimeField(default=datetime.now())

    def __unicode__(self):
                return "{0} {1}".format(
                        self.actor,
                        self.verb,

                        )

如果他们今天创作,我想展示一个人的行动。我想展示这样的旧动作:

22.12.2013 - 2 posts created for A Blog
22.12.2013 - x followed 3 people
21.12.2013 - 3 posts created for B Blog
21.12.2013 - 4 channel created 

这是用户的新闻源。我怎么能按照约会这样做?

1 个答案:

答案 0 :(得分:0)

您可以在视图中准备模板上下文,如下所示:

from datetime import datetime, timedelta
from django.shortcuts import render_to_response

def my_view(request):
    yesterday = datetime.today().date() - timedelta(1)
    return render_to_response('my_template.html', {
        'new_actions': Action.objects.filter(date__gt=yesterday),
        'old_actions_count': len(Action.objects.filter(date__lt=yesterday)),
    })

然后您可以使用模板中的上下文:

{% for action in new_actions %}
    {{ action }}
{% endfor %}
There was {{ old_actions_count }} older actions.