小编Sce*_*e5S的帖子

Django过滤JSONField dicts列表

我使用新的JSONField运行Django 1.9并具有以下Test模型:

class Test(TimeStampedModel):
    actions = JSONField()
Run Code Online (Sandbox Code Playgroud)

让我们说JSONField的动作如下所示:

[
  {
    "fixed_key_1": "foo1",
    "fixed_key_2": {
      "random_key_1": "bar1",
      "random_key_2": "bar2",
    }
  },
  {
    "fixed_key_1": "foo2",
    "fixed_key_2": {
      "random_key_3": "bar2",
      "random_key_4": "bar3",
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

我希望能够为列表中的每个项目过滤foo1和foo2键.当我做 :

>>> Test.objects.filter(actions__1__fixed_key_1="foo2")
Run Code Online (Sandbox Code Playgroud)

测试位于查询集中.但当我这样做时:

>>> Test.objects.filter(actions__0__fixed_key_1="foo2")
Run Code Online (Sandbox Code Playgroud)

它不是,这是有道理的.我想做的事情如下:

>>> Test.objects.filter(actions__values__fixed_key_1="foo2")
Run Code Online (Sandbox Code Playgroud)

要么

>>> Test.objects.filter(actions__values__fixed_key_2__values__contains="bar3")
Run Code Online (Sandbox Code Playgroud)

并在查询集中进行测试.

知道是否可以这样做以及如何做?

python django django-models django-queryset django-jsonfield

13
推荐指数
3
解决办法
7950
查看次数

按作者或分支过滤git日志

在我的工作流程中,我通常通常只对自己的分支以及某些特定分支感兴趣,例如stagingmaster,我git log希望反映这一点。我想出了这个命令:

git log --branches=staging* --author=my_name
Run Code Online (Sandbox Code Playgroud)

问题是authorand branches过滤器似乎与逻辑运算符链接在一起and,这意味着我可以看到我的所有分支或暂存,但不能同时看到两者。

换句话说,我只想staging用一个命令来查看我是作者的提交以及名为branch 的分支的所有提交(无论作者如何)。

有办法实现吗?

git branch author git-log git-history

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

初始化结构数组

我在C中初始化结构数组时遇到问题.这是我的结构:

typedef struct Voie {
    int num;
    int sem_num[3];
    int crois[3];
} Voie;
Run Code Online (Sandbox Code Playgroud)

这两个数组将包含0,2或3个整数.

我有一个12"Voie"阵列:

Voie voies[12];
Run Code Online (Sandbox Code Playgroud)

我希望用这些参数初始化每个参数:

{1,{0,16,1},{4,7,8}}
{2,{2,3},{4,5}}
{3,{},{}}
{4,{4,17,5},{7,10,11}}
{5,{6,7},{7,8}}
{6,{},{}}
{7,{8,17,9},{10,1,2}}
{8,{10,11},{10,11}}
{9,{},{}}
{10,{12,16,13},{1,4,5}}
{11,{14,15},{1,2}}
{12,{},{}}
Run Code Online (Sandbox Code Playgroud)

我尝试了一个函数返回一个结构,用一个开关分隔每个案例,但有重新定义的问题.然后我发现我认为是最好的解决方案,但仍然无法运行:

int cas[][] = { {1,{0,16,1},{4,7,8}},
                    {2,{2,3},{4,5}},
                    {3,{},{}},
                    {4,{4,17,5},{7,10,11}},
                    {5,{6,7},{7,8}},
                    {6,{},{}},
                    {7,{8,17,9},{10,1,2}},
                    {8,{10,11},{10,11}},
                    {9,{},{}},
                    {10,{12,16,13},{1,4,5}},
                    {11,{14,15},{1,2}},
                    {12,{},{}}  };

for (i=0 ; i<12 ; i++) {
    voies[i] = cas[i];
}
Run Code Online (Sandbox Code Playgroud)

我甚至不确定这是可能的,因为以下工作:

Voie v = {1,{0,16,1},{4,7,8}};
Run Code Online (Sandbox Code Playgroud)

但不是以下内容:

int tab[] = {1,{0,16,1},{4,7,8}};
Voie v = tab;
Run Code Online (Sandbox Code Playgroud)

另外:初始化后,如何访问结构中的每个元素?

谢谢您的帮助.

c arrays struct initialization dynamic

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