Help us understand the problem. What is going on with this article?

DjangoのModelでDateTimeFieldの値がデータが今日のものを抽出する

More than 1 year has passed since last update.

目的

  • DjangoのModelで、DateTimeField型のデータが今日のものを抽出したい

タスク管理アプリで、タスクの完了時刻データを用いて、本日完了したタスクを抽出する、ということを想定しています。

やり方

モデルクラスの中で、以下のようなメソッド(getTodaysCompletedTasks)を定義します。
@classmethodデコレータで、クラスメソッドとして呼び出せるようにしています。

filterメソッドの引数として、フィールド名__date = date.today()を指定することで、指定したフィールドの日付時刻データのうち、日付が今日と一致するものを抽出します。
date(2018,11,26)等の指定をすることで、日付を指定して抽出することもできます。

from datetime import date
from django.db import models

class Task(models.Model):
    completedDatetime = models.DateTimeField(blank = True, null = True)

    @classmethod
    def getTodaysCompletedTasks(cls):
        completedTasks = cls.objects.filter(\
            completedDatetime__date = date.today(),
            )
        return completedTasks

view.pyの中で、以下のようにすると、huga.htmlに抽出したデータを渡せます。

from .models import Task

def hoge(request):
    completedTasks = Task.getTodaysCompletedTasks()
    return render(request, "tasks/huga.html", {"completedTasks ": completedTasks })

まとめ

このくらいならviews.pyに書いていいかもしれないですが、メソッド名でやっていることがわかりやすくなることを期待して、model側に記載しました。
同様のコードをviews.pyに書いても動くはず。

参考

https://docs.djangoproject.com/ja/2.0/ref/models/querysets/#date

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away