小编mee*_*eep的帖子

django 1.4 - 无法比较offset-naive和offset-aware datetimes

我正在将应用程序从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)

python django timezone

82
推荐指数
1
解决办法
5万
查看次数

django 1.4 timezone.now()vs datetime.datetime.now()

我对夏令时处理感到有些困惑

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 timezone

50
推荐指数
4
解决办法
7万
查看次数

从Django管理页面中删除"站点"

Django管理页面将"Sites"作为默认对象.

这让用户感到困惑,因为我的应用程序还具有可通过管理页面访问的"站点"模型.

如何从页面中删除默认对象?

django django-admin

19
推荐指数
2
解决办法
8723
查看次数

在JQuery中将select的背景颜色设置为选定选项

此问题的后续行动:在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中,出于此问题的目的,它是唯一关注的浏览器.

知道如何解决这个问题吗?

css jquery

12
推荐指数
1
解决办法
6万
查看次数

在django中测试空/空字符串

我有一个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:确实有效.

python django null django-models

8
推荐指数
2
解决办法
2万
查看次数

存储过程 - 强制执行顺序

我有一个存储过程本身按顺序调用其他存储过程的列表:

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,则会正确生成摘要数据.

t-sql sql-server stored-procedures

5
推荐指数
1
解决办法
7629
查看次数

jquery count选择匹配所需值的输入

我有一个(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'的选项.

这样做最干净的方法是什么?

谢谢

validation jquery

3
推荐指数
1
解决办法
3111
查看次数

python datetime现在没有夏令时

我迷失在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 datetime

3
推荐指数
1
解决办法
1528
查看次数

从文本文件中删除未知字符

我有大量文件包含我尝试使用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字符?

python windows character-encoding

2
推荐指数
1
解决办法
7082
查看次数

在django中处理空值和零值

如果我有一个可以为空的字段的模型:

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 null

1
推荐指数
1
解决办法
666
查看次数