小编Raz*_* B.的帖子

过滤列表中的 Django JSONB 项目

我有一个 Django dataJSONField,其中包含以下数据

{
    "title": "Some Title",
    "projects": [
        {"name": "Project 1", "score": "5"},
        {"name": "Project 2", "score": "10"},
        {"name": "Project 3", "score": "2"},
    ]
}
Run Code Online (Sandbox Code Playgroud)

我需要按项目分数(数字类型)过滤行,即where project -> score <= 5

Django ORM 提供了过滤和使用 Postgres JSONB 字段的基础知识。也就是说,我可以做

Model.objects.filter(data__title="Some Title")
Run Code Online (Sandbox Code Playgroud)

但是当 JSON 列中有一个项目列表时,事情就不那么简单了,即我不能这样做

Model.objects.filter(data__projects__score__lte=5)

Only way I can reach the `score` in Django ORM is to use the array index, i.e.

Model.objects.filter(data__projects__0__score__lte=5)
Run Code Online (Sandbox Code Playgroud)

但这现在不起作用,我对该列表中的所有项目感兴趣,无论数量多少

我目前所在的位置:

我已将该列表作为查询集加入jsonb_array_elements

queryset.query.join(join=join_cfg)
Run Code Online (Sandbox Code Playgroud)

将以下 sql 附加到 QUERY

LEFT JOIN LATERAL jsonb_array_elements("my_table"."data" -> 'projects') projects …
Run Code Online (Sandbox Code Playgroud)

django postgresql jsonb

6
推荐指数
0
解决办法
483
查看次数

ng-click不会打开新窗口

我有一个表,其中最后一列包含应该打开一个新窗口但不会打开新窗口的按钮.这是我的代码:

<table class="table  table-hover" id="angular_table">
  <thead>
    <tr>
      <th class="company">Nome azienda&nbsp;<a ng-click="sort_by('company')"><i class="icon-sort"></i></a></th>
      <th class="code">Codice&nbsp;<a ng-click="sort_by('code')"><i class="icon-sort"></i></a></th>
      <th class="projectName">Nome progetto&nbsp;<a ng-click="sort_by('projectName')"><i class="icon-sort"></i></a></th>
      <th class="recordType">Tipo di record&nbsp;<a ng-click="sort_by('recordType')"><i class="icon-sort"></i></a></th>                            
      <th class="year">Anno&nbsp;<a ng-click="sort_by('year')"><i class="icon-sort"></i></a></th>
      <th class="month">Mese&nbsp;<a ng-click="sort_by('month')"><i class="icon-sort"></i></a></th>
      <th>Crea ricavo&nbsp;</th>
    </tr>
  </thead>                        
  <tbody>
    <tr ng-repeat="item in items | filter:query:checkEqual | orderBy:sortingOrder:reverse " id="lista">
      <td>{{item.company}}</td>
      <td >{{item.code}}</td>
      <td style="text-align: -webkit-left;"> <a href="/{{item.id}}" target="_blank">{{item.projectName}}</a></td>
      <td>{{item.recordType}}</td>                            
      <td>{{item.year}}</td>
      <td>{{item.month}}</td>
      <td class="btnCrea"><button class="btn2 btn-default2" ng-click="window.open('/apex/creaRicavoM?id={{item.id}}','_blank','heigth=600,width=600')">Crea</button></td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?提前致谢!

html javascript angularjs angularjs-ng-click

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