小编Jef*_*ffS的帖子

用于在JSON数组中查找元素的索引

我有一个看起来像这样的表:

CREATE TABLE tracks (id SERIAL, artists JSON);

INSERT INTO tracks (id, artists) 
  VALUES (1, '[{"name": "blink-182"}]');

INSERT INTO tracks (id, artists) 
  VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]');
Run Code Online (Sandbox Code Playgroud)

还有其他几个与此问题无关的列.将它们存储为JSON是有原因的.

我要做的是查找具有特定艺术家姓名(完全匹配)的曲目.

我正在使用此查询:

SELECT * FROM tracks 
  WHERE 'ARTIST NAME' IN
    (SELECT value->>'name' FROM json_array_elements(artists))
Run Code Online (Sandbox Code Playgroud)

例如

SELECT * FROM tracks
  WHERE 'The Dirty Heads' IN 
    (SELECT value->>'name' FROM json_array_elements(artists))
Run Code Online (Sandbox Code Playgroud)

但是,这会进行全表扫描,并且速度不是很快.我尝试使用函数创建GIN索引names_as_array(artists)并使用'ARTIST NAME' = ANY names_as_array(artists),但是不使用索引并且查询实际上明显更慢.

sql postgresql indexing json jsonb

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

Jquery Mobile Sticky Footer

我想要一个Jquery Mobile中的页脚,这个页脚没有修复,但始终位于页面底部.

像这样:http://ryanfait.com/sticky-footer/(但在JQuery Mobile中),不像标准的JQuery Mobile固定页脚.

因此页脚应出现在内容的末尾或屏幕的底部,以较低者为准.

关于如何处理这个的任何想法?

编辑:

基本的问题是,我似乎无法让div data-role=content实际占据屏幕的整个高度.

css sticky-footer jquery-mobile

10
推荐指数
2
解决办法
6083
查看次数

使用Django 1.8 ORM跨多个表的注释

我遇到了新的问题

假设我有以下3种型号:

class Author(models.Model):
    name = models.TextField()

class Book(models.Model):
    author = models.ForeignKey(Author, related_name='books')
    title = models.TextField()
    is_fiction = models.BooleanField()

class SpeakingEvent(models.Model):
    author = models.ForeignKey(Author, related_name='events')
    date = models.DateField()
Run Code Online (Sandbox Code Playgroud)

我希望得到一个单独的作者查询集,其中注释了已发布的小说书的数量以及未来演讲事件的数量.

所以,我可以做到以下几点:

Author.objects.all().annotate(
    future_speaking=Sum(Case(
        When(events__date__gte=timezone.now(),
             then=1),
        default=0)),
    fiction_count=Sum(Case(
        When(books__is_fiction=True,
             then=1),
        default=0)),
)
Run Code Online (Sandbox Code Playgroud)

但是,结果数字太高.如果有m本书和n个事件,那么我们最终会<correct_result> * m计算事件<correct_result> * n数量.这是由于django与左连接一起连接两个表的方式引起的.如果我省略任何一个注释,结果都是正确的.

有没有办法更改连接是删除带有when子句的重复项?

django postgresql django-orm django-1.8

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

为什么Django reverse()失败了unicode?

这是一个django模型文件,它没有像我期望的那样工作.我希望to_url方法在urls.py文件中进行反向查找,并获得一个url,它对应于使用Arguments模型提供的参数调用该视图.

from django.db import models
class Element(models.Model):
    viewname = models.CharField(max_length = 200)
    arguments = models.ManyToManyField('Argument', null = True, blank = True )

    @models.permalink
    def to_url(self):
        d = dict( self.arguments.values_list('key', 'value') )
        return (self.viewname, (), d)
class Argument(models.Model):
    key = models.CharField(max_length=200)
    value = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

值d最终作为从unicode字符串到另一个unicode字符串的字典,我相信,它应该可以通过permalink装饰器调用的reverse()方法正常工作,但是,它会导致:

TypeError: reverse() keywords must be strings
Run Code Online (Sandbox Code Playgroud)

python django unicode

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