小编Phi*_*her的帖子

检查元素是否被溢出隐藏:隐藏的JQuery/JavaScript

我有一个日历,其中包含每天的活动列表.目前,我每天最多显示3个事件,并允许用户切换以展开列表.

我用overflow:hidden和max-height:XXpx属性隐藏列表.我正在尝试检测当前隐藏在该列表中的事件.

我环顾四周,找不到任何可以检测到这一点的东西

我试过了:

if (element.offsetHeight < element.scrollHeight || element.offsetWidth < element.scrollWidth) {
     // element has overflow value
 } else {
     // element doesn't have overflow value
 }
Run Code Online (Sandbox Code Playgroud)

两者element.offsetHeightelement.scrollHeight返回相同的值,任何在我的列表中的元素.

html javascript css jquery

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

Django 管理表单根据复选框动态更改字段

我正在 Django 中实现日历,并希望扩展我的功能并添加对重复事件的支持。我的问题是我想要一个 BooleanField 在单/多天事件和重复事件之间切换。因此,该字段将被标记为:这是重复发生的事件吗?如果用户选中该框,它会更改开始和结束字段以显示不同的字段。

这是我的 model.py 的简短版本

class Event(models.Model):

    title = models.CharField(max_length=40)

    description = models.TextField(blank=True)

    is_recurring = models.BooleanField(blank=True, default=False, verbose_name='Event is recurring?')

    start = models.DateTimeField()

    end = models.DateTimeField()    

    def __str__(self):
        return self.title
Run Code Online (Sandbox Code Playgroud)

如果用户检查 is_recurring 字段,则动态删除这 2 个字段并更改表单。这是我的 admin.py:

class EventAdmin(admin.ModelAdmin):
    form = EventForm
    fieldsets = [
        (None,  {'fields': [
                                'title',
                                'description'
                            ]
                }
        ),
        (None,  {'fields':  [
                                'is_recurring',
                                'start',
                                'end',
                            ]
                }
        ),
    ]   # END fieldset

    def get_fieldsets(self, *args, **kwargs):
        return(
                (None, {
                        'fields' : ('my_extra_field',),
                    }),
            ) …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms django-admin

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

使用 F 和 Q 表达式进行 Django 模型过滤

我正在 Django 中制作调度程序,但在过滤每周日历视图的事件时遇到问题。日历支持多日事件,而我当前的过滤器不适用于此每周视图。

这是我的模型:

 class Event(models.Model):
    title = models.CharField(max_length=40)
    start = models.DateTimeField()
    end = models.DateTimeField()
    description = models.TextField()
    all_day = models.BooleanField(default=False)
    recuring = models.BooleanField(default=False)
    recuring_end = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return '/cab/event/%i/' % self.id
Run Code Online (Sandbox Code Playgroud)

我正在尝试过滤给定一周内发生的事件。对于单日活动,我会做类似的事情。

events = Event.objects.order_by('start').filter(Q(start__gte=monday) | Q(end__lte=sunday))
Run Code Online (Sandbox Code Playgroud)

这可以检索一周内发生的所有单日事件。它还适用于在给定一周内开始或结束的多日活动。问题是检索在一周之前开始并在一周之后结束但确实跨越一周的对象。

我的想法是尝试过滤掉任何持续时间超过 9 天的事件(即从前一周的周日开始并于下周的周一结束),因为我知道这些事件很少见,并且不会完全破坏性能。我想在不指定日期范围的情况下执行此操作,因为这不是动态的。

为了尽量减少性能影响,我尝试使用 F 表达式来评估事件的持续时间以及事件的开始和结束。我的第一个想法是做类似的事情:

my_events = Event.objects.order_by('start').filter(Q(start__gte=monday) | Q(end__lte=sunday) | Q( (F('end_day') - F('start_day')) >= 9 ) )
Run Code Online (Sandbox Code Playgroud)

但我收到错误'bool' object is not iterable

还尝试过:

my_events = Event.objects.order_by('start').filter(Q(start__gte=monday) | Q(end__lte=sunday) | …
Run Code Online (Sandbox Code Playgroud)

django django-models django-filter

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