簡體   English   中英

Django查詢按日期過濾

[英]Django Query Filter by Date

我正在嘗試查詢/過濾表以查找今天東部時間發生的事件,但是我一直遇到問題。 它返回我的預期結果,但我收到運行時警告。 我沒有嘗試過15種不同的實現,但是我要么收到了運行時警告,要么沒有返回預期的數據。 盡管數據庫將所有內容都保存為utc,但整個應用程序僅基於美國東部時間。 我要做的就是過濾發生的事件,這些事件> =到EST / EDT AM 12:00

RuntimeWarning:時區支持處於活動狀態時,DateTimeField收到的日期時間很短(2013-08-13 00:00:00)。

我要執行的功能是檢查東部時間今天用戶有多少條目。

使用Sqlite3

Settings.py:
    USE_TZ = True
    TIME_ZONE = 'America/New_York'


Models.py

class Entry(models.Model):
    id = models.AutoField(primary_key=True, null=False)
    prize_id = models.ForeignKey(Prize)
    member = models.ForeignKey(Member)
    createdate = models.DateTimeField(auto_now_add=True)

Views.py
from django.utils import timezone
from datetime

    #this is part of my view class
    def get_user_entries(memberid, prizeid):
        today = datetime.date.today()
        e = Entry.objects.filter(member_id=memberid
        ).filter(prize_id=prizeid
        ).filter(createdate__gte=today
        ).count()
        return e

這是我厭倦了今天約會的一些方法:

    today = datetime.date.today()
    today = '%s-%s-%s' % (today.year, today.month, today.day)

    date = datetime.date.today()
    time = datetime.time(00, 00, 00, 000000)
    combo = datetime.datetime.combine(date, time)

    hours = timezone.now().hour
    minutes = timezone.now().minute
    seconds = timezone.now().second
    mseconds = timezone.now().microsecond

    #convert timezone now to utc 04:00:00:000000 UTC
    # this works now and doesnt throw a runtime error and gives me the correct data im expecting, but i think it will be an hour off during dst
    t = timezone.now().replace(hour=04, minute=00, second=00, microsecond=000000)

    #I also tired this but still didnt get the expected results:
    e = Entry.objects.filter(member_id=1
        ).filter(prize_id=1
        ).filter(createdate__gte=timezone.now() -
        datetime.timedelta(hours=datetime.datetime.now().hour,
        minutes=datetime.datetime.now().minute,
        seconds=datetime.datetime.now().second,
        microseconds=datetime.datetime.now().microsecond))

是否有人有一種簡單的方法來獲取時間戳大於等於今天的對象?

只是想出別的東西:

通過執行一個查詢集:

today= todaydate (use timezone to get it)
today_entry = Entry.objects.filter(date1=today).count()

你能試一下嗎?

count_reward = Rewards.objects.filter(user = request.user).filter(routine = d).count()

您是否從模型入口中導入?

from models import Entry

如果要獲取在12AM之后創建的所有對象。 (我想今天是否創建或修改了所有元素?)

我的models.py

class Mecdatebis(models.Model):
    text1 = models.CharField(max_length=50)
    date1 = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.text1

我創建了一個具有CharField(可識別條目是否出現在我的html中的好條目)和DateTimeField(auto_now = True)的模型,該模型創建了您要查找的時間戳。

在我的views.py中:

from models import Mecdatebis
from datetime import *

def date(request):
    now = datetime.now()
    test = Mecdatebis.objects.all()   #get all the data from your models
    return render_to_response('date.html', {
        'mydate': test,
        'now' : now }
        )

“ mydate”是Mecdatebis擁有的所有字段(text1和date1),現在等於系統上的日期

然后在我的模板上:

{% for mesdate in mydate %}

    {% if now.year == mesdate.date1.year and now.month == mesdate.date1.month and now.day == mesdate.date1.day %}
        {{mesdate.text1}}       
    {% endif %}

{% endfor %}

我的測試如下:如果我現在在系統上的時間是==時間戳的年份,並且現在日期的月份是==時間戳的月份,並且日期(數字)我現在的日期是時間戳記日期的==。 然后顯示所有相同日期的條目。

因此,至少我們得到了對象。 但算上他們我有困難。 我試圖在視圖中應用相同的方法。 沒有成功,我希望有人可以來這里工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM