存在多个过滤器

时间:2017-12-24 01:55:29

标签: python django rest

我正在尝试过滤我的 exists 查询集,查看3个字段,以检查此游戏,平台和区域的发布日期是否已存在。

我想要实现的目标:

var r = require('rethinkdb');
var axios = require('axios');

var schema = function(data, callback){
  new_schema = true;
  var schema = {};
  if(new_schema){
    schema.user = user.id;
  }

  schema.name = data.title || '';
  schema.email = data.email || '';

  if(data.url){
    axios.get(data.url).then(function(err, response){
     if(err) schema.url = 'no site'  
     schema.url = 'data.url';
     callback(schema);
    }).catch(function(error){
       console.log(error);
      callback(schema);
     });
  }else{
    callback(schema);
  }

};
  var datos = '';  
  command.stdout.on('data', (data) => {
    datos = datos + data;
  });


  command.on('close', (code) => {

      const objs = JSON.parse(datos);
      for (var i in objs) {
        let obj = schema(objs[i], function(sch){
          console.log(sch);
        });
      }
    }catch(e){
      console.log(e);
    }
    process.exit();
  });

});

2 个答案:

答案 0 :(得分:1)

非常简单 - 只需将它们放在一个带逗号的过滤器()中即可:

if ReleaseDate.objects.filter(game=game.id, platform=release_date_object['platform'], region=release_date_object['region']).exists():

有时更复杂的查询需要Q对象,但对于简单的多字段查询,只需将它们全部放在一个过滤器中()。

答案 1 :(得分:0)

您可以使用Q objects执行以下操作:

if ReleaseDate.objects.filter(Q(game=game.id) & Q(platform=release_date_object['platform']) & Q(region=release_date_object['region'])).exists()

这可以确保过滤器中的每个参数都为真。