小编Ben*_*vis的帖子

RRule 能否描述每天两个特定时间发生的事件?

假设我有一个活动发生在每天晚上 7:00 和下午 2:00。RRule 看起来像这样:

FREQ=DAILY;BYHOUR=10,14
Run Code Online (Sandbox Code Playgroud)

如果我想要一个发生在上午 10:00 和下午 2:30 的事件我会假设它看起来像这样:

FREQ=DAILY;BYHOUR=10,14;BYMINUTE=0,30
Run Code Online (Sandbox Code Playgroud)

但这似乎并不正确。该规范称“BYxxx 规则部分在一段时间内小于频率通常会增加或扩大重复发生的次数”。在http://jkbrzt.github.io/rrule/进行测试会产生以下结果:

  • 周一 10:00
  • 周一 10:30
  • 周一 14:00
  • 周一 14:30
  • 周二 10:00
  • 周二 10:30
  • 周二 14:00
  • 周二 14:30

我真正想要的是这样的:

  • 周一 10:00
  • 周一 14:30
  • 周二 10:00
  • 周二 10:30
  • 周三 10:00
  • 周三 14:30
  • 周四 10:00
  • 周四 14:30

rrule

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

Gnome Shell扩展未加载,没有可用的错误消息

我有两个gnome-shell扩展,升级到3.24后似乎没有加载.在gnome-tweak-tool中,他们有一个带有"Error loading extension"的警告标志图标,没有别的.我尝试使用look glass(lg),它只是说"Error",并且扩展名"没有报告任何错误".

如何调试扩展程序以找出未加载的原因?

gnome-shell gnome-shell-extensions

5
推荐指数
4
解决办法
4598
查看次数

Django 抱怨查询必须在子查询中使用,当它在子查询中使用时

QuerySet我有一个名为 的模型的以下自定义方法Program

def with_volunteer_stats(self):
    from programs.models import Session
    volunteers_needed = ExpressionWrapper(
        F('num_student_seats') / F('student_volunteer_ratio'),
        output_field=models.IntegerField())

    sessions = (
        Session.objects.filter(program_id=OuterRef('pk'))
        .annotate(num_volunteers=Count('volunteer_attendances__volunteer', distinct=True))
        .order_by('num_volunteers')
    )
    qs = self.annotate(
        volunteers_needed=volunteers_needed,
        least_volunteers=Subquery(sessions.values('num_volunteers')[0])
    ).annotate(
        remaining_volunteers_needed=(F('volunteers_needed') - F('num_volunteers'))
    )
    return qs
Run Code Online (Sandbox Code Playgroud)

运行此程序时,我收到异常:

ValueError: This queryset contains a reference to an outer query and may only be used in a subquery.

回溯显示使用 评估行时发生的异常Subquery。这与 Django 文档中有关如何使用Subquery. 有什么想法我做错了吗?

python django

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

In Vim, how do I make visual line selection for a block of code?

例如,在 HTML 中,我想选择整个元素。我可以做Shift+ V,并继续点击J直到我选择了所有的行,但这很麻烦。打字vat也不是我想要的——它进入视觉模式,而不是视觉线模式。没有视觉线的问题是,当我猛拉文本时,它不会猛拉第一行的缩进。

vim

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

如何在 Django QuerySet 中将 DateField() + TimeField() 转换为本地时间?

我的模型为这些字段:

  • 日期 =models.DateField()
  • 开始时间=models.TimeField()
  • 结束时间=models.TimeField()

我想用start_datetimeand注释查询集end_datetime,如下所示:

class SessionQuerySet(models.QuerySet):
    def with_datetimes(self):
        return self.annotate(
            start_datetime=ExpressionWrapper(
                F('date') + F('start_time'),
                output_field=models.DateTimeField()
            ),
            end_datetime=ExpressionWrapper(
                F('date') + F('end_time'),
                output_field=models.DateTimeField()
            ),
        )
Run Code Online (Sandbox Code Playgroud)

但是,查询中的输出字段会产生一个简单的日期时间:

>>> Session.objects.with_datetimes()[0].start_datetime
<<< datetime.datetime(2021, 9, 20, 17, 0)
Run Code Online (Sandbox Code Playgroud)

我希望在查询中本地化日期。

我尝试将上述表达式包装在django.db.models.functions.Cast(), with中output_field=DateTimeField(),但它会转换为 UTC 而不是本地时区。

本质上我需要的是相当于 Postgresat time zone功能来将原始时间转换为本地时间。有没有办法在 Django 中做到这一点?

python django postgresql

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

Bash数组键与现有变量冲突

我的期望是bash数组中的键被解释为文字,但似乎并非如此.例如,以下按预期工作:

$ declare -a mymap
$ mymap[foo]="bar"
Run Code Online (Sandbox Code Playgroud)

没问题,我们现在有一个带键的数组,字面意思"foo".但是当我设置一个与键同名的环境变量时,我在其中放入了特殊字符,它会产生一个解析错误:

$ declare -a mymap
$ export foo=" > "
$ mymap[foo]="bar"
-bash: >: syntax error: operand expected (error token is ">")
$ mymap["foo"]="bar"
-bash: >: syntax error: operand expected (error token is ">")
$ mymap['foo']="bar"
-bash: >: syntax error: operand expected (error token is ">")
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我在这里缺少的东西吗?我正在使用bash版本4.3.33.

arrays bash

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