观看次数
@Override
public void configure(final ClientDetailsServiceConfigurer clients)
throws Exception {
clients.inMemory()
.withClient("SampleClientId")
.secret(passwordEncoder.encode("secret"))
.authorizedGrantTypes( "password", "authorization_code", "refresh_token", "implicit")
.scopes( "user_info","read", "write", "trust")
.autoApprove(true)
.accessTokenValiditySeconds(3600)// 1 hour
.refreshTokenValiditySeconds(3600*24*10)// 10 day
.and()
.withClient("OTTAppId")
.secret(passwordEncoder.encode("secret1"))
.authorizedGrantTypes( "password", "authorization_code", "refresh_token", "implicit")
.scopes("user_info","read", "write", "trust")
.autoApprove(true)
模型
import datetime
from .models import AccountTransaction
date = datetime.datetime.today()
def account_transactions_week_view(request):
account_transactions = AccountTransaction.objects.filter(user_id = request.user.id).filter(datetime__range=[date - datetime.timedelta(days=7), date])
我将过去一周的最新条目列表带到页面上。为此,我使用了过滤器。
我想知道为什么该变体无法正常工作(一段时间后会出现新条目):
class AccountTransaction(models.Model):
user = models.ForeignKey(User, verbose_name=_('user'))
datetime = models.DateTimeField(_('created at'), auto_now_add=True)
但是此变体可以正常工作:
filter(datetime__range=[date - datetime.timedelta(days=7), date])
我想知道第一个是怎么了?
有中间件
filter(datetime__gt=date - datetime.timedelta(days=7))
设置
class TimezoneMiddleware(object):
def process_request(self, request):
tzname = request.session.get('django_timezone')
if not tzname:
request.session['django_timezone'] = 'Europe/Kiev'
tzname = 'Europe/Kiev'
timezone.activate(pytz.timezone(tzname))
答案 0 :(得分:3)
您已经在方法之外定义了date
。这意味着定义是在首次导入模块,Django进程启动时执行的。对于该过程的所有用途,它将保持相同的值,直到服务器决定回收它并创建一个新值为止。因此,您的范围查询将在该过程的生存期内将原始值用作所有查询的终点。
解决方案是将定义简单地移到view函数内部。
(您的其他查询之所以起作用,是因为它只是在执行“自原始日期起大于7天的所有内容”,它会自动包含大于原始日期的事物。)