2

我正在尝试查询/过滤表格以查找东部时间今天发生的事件,但我一直遇到问题。它返回我的预期结果,但我收到运行时警告。我没有尝试大约 15 种不同的实现,但我要么收到运行时警告,要么没有返回预期的数据。虽然数据库将所有内容存储为应有的 UTC,但整个应用程序仅基于东部时间。我要做的就是过滤发生在 >= 至 12:00 AM EST/EDT 的对象

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))

有没有人有一种简单的方法来获取时间戳 >= 到今天的对象?

4

1 回答 1

1

只是想出一些别的东西:

通过做一个查询集:

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 之后创建的所有对象。(我想今天创建或修改了所有元素?)

我的模型.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 %}

我的测试如下:如果我现在系统上的时间是 == 在我的时间戳的年份,如果我现在日期的月份是 == 我的时间戳的月份,如果日期(数字)我现在的日期是 == 时间戳日。然后给我看同一日期的所有条目。

所以至少我们得到了对象。但是数数我有困难。我试图在视图中应用相同的方法。没有成功,我希望有人能来这里做点什么。

于 2013-08-17T05:50:59.330 回答