Преобразование необработанного SQL-запроса в Django ORM

То, что в основном делает метод bind, это что-то вроде (не совсем так, потому что аргументы разрезаны, чтобы исключить контекст):

function bind(context) {
    var self = this;
    return function() {
        self.apply(context, arguments);
    }
}

Таким образом, в основном это возвращает другую функцию, которая будет называть себя учитывая контекст и аргументы. Если вы снова это bind, вы свяжете эту вновь созданную функцию, которая будет выглядеть как bind, как:

 function bind(context) {
    var self = this;
    return function() {
        self.apply(context, arguments);
    }.bind(otherContext);
}

Но поскольку внутренняя функция, возвращаемая действиями bind в качестве замыкания, когда исходный контекст является первым, связанным первым (self), который будет контекстом с вашей функцией, будет действительно выполнен.

0
задан max 17 January 2019 в 16:16
поделиться

1 ответ

Фактически можно утверждать, что в этом случае вы были бы оправданными, попросив Джанго выполнить «необработанный запрос», что, конечно, вы можете сделать.

Я бы привел аргумент - ясность. То, что вы делаете, очевидно, сложно, , но оно кратко описывается синтаксисом SQL, который хорошо известен всем программистам. (И, если возникнет необходимость ... и, как мы все знаем, это неизбежно произойдет ... это можно было бы изменить легко.)

Я думаю, что я мог бы поэтому сделать на тот случай, если вы будете здесь использовать прямой SQL. Если бы я был твоим руководителем команды, это, вероятно, то, что я бы предложил.

0
ответ дан Mike Robinson 17 January 2019 в 16:16
поделиться
Другие вопросы по тегам:

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