我正在将应用程序从django 1.2迁移到1.4.
我有一个每日任务对象,其中包含应该完成任务的时间:
class DailyTask(models.Model):
time = models.TimeField()
last_completed = models.DateTimeField()
name = models.CharField(max_length=100)
description = models.CharField(max_length=1000)
weekends = models.BooleanField()
def __unicode__(self):
return '%s' % (self.name)
class Meta:
db_table = u'dailytask'
ordering = ['name']
Run Code Online (Sandbox Code Playgroud)
为了检查今天是否仍需要完成任务,我有以下代码:
def getDueDailyTasks():
dueDailyTasks=[]
now = datetime.datetime.now()
try:
dailyTasks = DailyTask.objects.all()
except dailyTask.DoesNotExist:
return None
for dailyTask in dailyTasks:
timeDue = datetime.datetime(now.year,now.month,now.day,dailyTask.time.hour,dailyTask.time.minute,dailyTask.time.second)
if timeDue<now and timeDue>dailyTask.last_completed:
if dailyTask.weekends==False and now.weekday()>4:
pass
else:
dueDailyTasks.append({'id':dailyTask.id,
'due':timeDue,
'name': dailyTask.name,
'description':dailyTask.description})
return dueDailyTasks
Run Code Online (Sandbox Code Playgroud)
这在1.2下工作正常,但在1.4以下我得到错误:
can't compare offset-naive and offset-aware datetimes …Run Code Online (Sandbox Code Playgroud) 我对夏令时处理感到有些困惑
settings.py:
TIME_ZONE = 'Europe/London'
USE_TZ = True
Run Code Online (Sandbox Code Playgroud)
在django shell中:
>>> from django.utils import timezone
>>> import datetime
>>> print timezone.now()
2012-05-28 11:19:42.897000+00:00
>>> print timezone.make_aware(datetime.datetime.now(),timezone.get_default_timez
one())
2012-05-28 12:20:03.224000+01:00
Run Code Online (Sandbox Code Playgroud)
为什么他们在夏令时方面不一样?两者都应该是语言环境,不是吗?
我已经阅读了文档但不是更明智的.
Django管理页面将"Sites"作为默认对象.
这让用户感到困惑,因为我的应用程序还具有可通过管理页面访问的"站点"模型.
如何从页面中删除默认对象?
此问题的后续行动:在JQuery中设置选择选项的背景颜色
我有一个包含多个选择框的页面,如下所示:
<select name="item-0-status" id="id_item-0-status">
<option value="">---------</option>
<option value="1">Online</option>
<option value="2">Offline</option>
<option value="3">Unknown</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这些是在django中自动生成的,因此无法将css类,id或属性直接应用于选项.select元素包含'item-0-status','item-1-status','item-2-status'等ID.
我通过以下JQuery代码为选项分配颜色:
$('select[id$=-status][id^=id_item-]').children().each(
function (){
if($(this).val() == 0){
$(this).css('backgroundColor','white');
}
if($(this).val() == 1){
$(this).css('backgroundColor','green');
}
if($(this).val() == 2){
$(this).css('backgroundColor','red');
}
if($(this).val() == 3){
$(this).css('backgroundColor','orange');
}
}
);
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
我还希望select元素与所选选项具有相同的背景颜色,我试图使用以下内容实现:
$('select[id$=-status][id^=id_item-]').each(
function (){
$(this).css('backgroundColor',$('option:selected',this).css('backgroundColor'));
}
);
Run Code Online (Sandbox Code Playgroud)
但是,这只是将选择元素用蓝色着色(我认为它是从悬停属性而不是背景中获取颜色).这是在Firefox 3.6.8中,出于此问题的目的,它是唯一关注的浏览器.
知道如何解决这个问题吗?
我有一个charfield,其中包括:
myString = models.CharField(max_length=50,null=True,blank=True)
Run Code Online (Sandbox Code Playgroud)
在我的许多对象中,当通过django管理界面创建时,此特定字符串通常会留空.在MySQL中,列是VARCHAR(50),默认值为NULL.
无论我在views.py中尝试做什么测试来检测空值,总是似乎评估为false是否为空白条目:
myString is None
myString==""
len(myString)==0
Run Code Online (Sandbox Code Playgroud)
如何区分此字段的空白和非空白值?
谢谢
编辑:
实际视图如下,我想仅在此字段不为空时才执行块.
if myObject.myString:
#do something
Run Code Online (Sandbox Code Playgroud)
块总是执行,我已经尝试了所有上述测试空白字段的例子.
编辑2:
抓一点,if myObject.myString:确实有效.
我有一个存储过程本身按顺序调用其他存储过程的列表:
CREATE PROCEDURE [dbo].[prSuperProc]
AS
BEGIN
EXEC [dbo].[prProc1]
EXEC [dbo].[prProc2]
EXEC [dbo].[prProc3]
--etc
END
Run Code Online (Sandbox Code Playgroud)
但是,我的表中有时会产生一些奇怪的结果,由prProc2生成,这取决于prProc1生成的结果.如果我按顺序手动执行prProc1,prProc2,prProc3,那么一切都很好.看来,当我运行顶级过程时,在Proc1完成之前正在执行Proc2并将其结果提交给db.它并不总是出错,但是当Proc1有一个很长的执行时间(在这种情况下〜10s)时似乎出错了.
如何更改prSuperProc,以便每个过程仅在前面的过程完成并提交后才执行?交易?
编辑额外的细节:
我的数据库中有一个表,它有一个默认为null的列.prProc1在此表上执行一组更新语句以填充此列.然后,prProc2根据此列中的值将摘要数据插入到辅助表中.
当我运行超级过程时,我(有时)看到的是第一个表具有由prProc1正确计算的结果,但是prProc2已生成结果,就像列全部为空.如果我然后手动运行prProc2,则会正确生成摘要数据.
我有一个(django生成的)表单,其中包含以下内容:
<form action="./" id="my_form" method="post">
...
<select name="object_0_status" id="id_object_0_status">
<option value="">---------</option>
<option value="1">Online</option>
<option value="2">Offline</option>
<option value="3">Unknown</option>
</select>
<select name="object_1_status" id="id_object_1_status">
<option value="">---------</option>
<option value="1">Online</option>
<option value="2">Offline</option>
<option value="3">Unknown</option>
</select>
<select name="object_2_status" id="id_object_2_status">
<option value="">---------</option>
<option value="1">Online</option>
<option value="2">Offline</option>
<option value="3">Unknown</option>
</select>
...
</form>
Run Code Online (Sandbox Code Playgroud)
我正在编写一个自定义验证方法(使用JQuery Validations插件http://docs.jquery.com/Plugins/validation),它正在交叉检查表单上的不同条目.为此,我需要检索选择值设置为"1"的选择框的数量(例如,在线).
选择框由表单工厂生成,因此将有可变数量的表单.表单上还有其他选择选项,不应计算在内 - 只是结尾为'_status'的选项.
这样做最干净的方法是什么?
谢谢
我迷失在tzinfo文档中.
我想为我的位置创建一个日期时间对象,该对象不包括夏令时的调整.
目前我丑陋地攻击它:
import time
import datetime
now=datetime.datetime.now()
if time.localtime().tm_isdst==1:
now=now+datetime.timedelta(hours=-1)
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法?
我有大量文件包含我尝试使用Python脚本处理的数据.
这些文件是未知的编码,如果我在Notepad ++中打开它们,它们包含由加载的"null"字符分隔的数字数据(在Notepad ++中黑色背景上用白色表示为NULL).
为了处理这个问题,我将文件用空字符\ x00分隔,并使用以下脚本仅检索数值:
stripped_data=[]
for root,dirs,files in os.walk(PATH):
for rawfile in files:
(dirName, fileName)= os.path.split(rawfile)
(fileBaseName, fileExtension)=os.path.splitext(fileName)
h=open(os.path.join(root, rawfile),'r')
line=h.read()
for raw_value in line.split('\x00'):
try:
test=float(raw_value)
stripped_data.append(raw_value.strip())
except ValueError:
pass
Run Code Online (Sandbox Code Playgroud)
但是,文件中有时会出现其他无法识别的字符(据我所知,总是在最开始时) - 这些字符在Notepad ++中显示为"EOT","SUB"和"ETX".它们似乎干扰了Python中文件的处理 - 文件似乎以这些字符结束,即使Notepad ++中有明显更多的数据可见.
如何在处理之前从这些文件中删除所有非ASCII字符?
如果我有一个可以为空的字段的模型:
class Something(models.Model):
parameter = models.FloatField(blank=True,null=True)
Run Code Online (Sandbox Code Playgroud)
然后我想在视图或模板中处理这个问题.
如果something.parameter有一个值,我想返回值,如果它是null,我想返回'N/A'.
如果我使用:
something = Something.objects.get(id=1)
output_string = 'parameter value: %s' % (something.parameter or 'N/A')
Run Code Online (Sandbox Code Playgroud)
然后这是有效的,除了在something.parameter = 0的情况下,它也返回'N/A'而不是所需的'0'.
我该如何纠正这种行为?
有没有办法直接在模板中执行此操作?
django ×5
python ×4
jquery ×2
null ×2
timezone ×2
css ×1
datetime ×1
django-admin ×1
sql-server ×1
t-sql ×1
validation ×1
windows ×1