Фильтровать по свойству

scpope & amp; закрытие & amp; hiisting (var / function)

  1. scpope: глобальный var может быть доступен в любом месте (весь объем файла), локальный var может быть доступен только локальной областью (функция / область блока)! Примечание: если локальная переменная не использует переменные var в функции, она станет глобальной переменной!
  2. close: функция внутренняя, другая функция, которая может обращаться к локальной области (родительская функция) & amp; глобальный охват, howerver, к которым его нельзя открыть другим! если вы не вернете его в качестве возвращаемого значения!
  3. hoisting: переместите все объявить / ундекларировать vars / function в область верхнего уровня, чем присвоить значение или null! Примечание: он просто перемещает объявление, а не перемещает значение!

var a = 1;                
//"a" is global scope
function b() {  
   var a = function () {}; 
   //"a" is local scope 
   var x = 12; 
   //"x" is local scope 
   a = 10;
   //global variable "a" was overwrited by the local variable "a"  
   console.log("local a =" + a);
   return console.log("local x = " + x);
}       
b();
// local a =10
// local x = 12
console.log("global a = " + a);
// global a = 1
console.log("can't access local x = \n");
// can't access local x = 
console.log(x);
// ReferenceError: x is not defined

80
задан djvg 7 December 2018 в 21:10
поделиться

2 ответа

Нет. Фильтры Django работают на уровне базы данных, генерируя SQL. Для фильтрации на основе свойств Python вы должны загрузить объект в Python для оценки свойства - и к этому моменту вы уже выполнили всю работу по его загрузке.

68
ответ дан 24 November 2019 в 09:57
поделиться

Возможно, я неправильно понял ваш исходный вопрос, но в python встроен фильтр .

filtered = filter(myproperty, MyModel.objects)

Но лучше использовать понимание списка :

filtered = [x for x in MyModel.objects if x.myproperty()]

или даже лучше, выражение генератора :

filtered = (x for x in MyModel.objects if x.myproperty())
36
ответ дан 24 November 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: