我正在尝试过滤我的 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();
});
});
答案 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()
这可以确保过滤器中的每个参数都为真。