class documentation

class Subquery(BaseExpression, Combinable):

Known subclasses: django.db.models.expressions.Exists

View In Hierarchy

An explicit subquery. It may contain OuterRef() references to the outer query which will be resolved when it is applied to that query.
Method __init__ Undocumented
Method ​_resolve​_output​_field Attempt to infer the output type of the expression. If the output fields of all source fields match then, simply infer the same type here. This isn't always correct, but it makes sense most of the time.
Method as​_sql Responsible for returning a (sql, [params]) tuple to be included in the current query.
Method copy Undocumented
Method get​_external​_cols Undocumented
Method get​_group​_by​_cols Undocumented
Method get​_source​_expressions Undocumented
Method set​_source​_expressions Undocumented
Class Variable contains​_aggregate Undocumented
Class Variable empty​_result​_set​_value Undocumented
Class Variable template Undocumented
Instance Variable extra Undocumented
Instance Variable query Undocumented
Property external​_aliases Undocumented

Inherited from BaseExpression:

Static Method ​_convert​_value​_noop Undocumented
Method __getstate__ Undocumented
Method ​_parse​_expressions Undocumented
Method asc Undocumented
Method desc Undocumented
Method flatten Recursively yield this expression and all subexpressions, in depth-first order.
Method get​_db​_converters Undocumented
Method get​_lookup Undocumented
Method get​_source​_fields Return the underlying field types used by this aggregate.
Method get​_transform Undocumented
Method relabeled​_clone Undocumented
Method resolve​_expression Provide the chance to do any preprocessing or validation before being added to the query.
Method reverse​_ordering Undocumented
Method select​_format Custom format for select clauses. For example, EXISTS expressions need to be wrapped in CASE WHEN on Oracle.
Class Variable ​_output​_field​_resolved​_to​_none Undocumented
Class Variable filterable Undocumented
Class Variable is​_summary Undocumented
Class Variable window​_compatible Undocumented
Property ​_output​_field​_or​_none Return the output field of this expression, or None if _resolve_output_field() didn't return an output type.
Property conditional Undocumented
Property contains​_column​_references Undocumented
Property contains​_over​_clause Undocumented
Property convert​_value Expressions provide their own converters because users have the option of manually specifying the output_field which may be a different type from the one the database returns.
Property field Undocumented
Property output​_field Return the output type of this expressions.

Inherited from Combinable:

Constant ADD Undocumented
Constant BITAND Undocumented
Constant BITLEFTSHIFT Undocumented
Constant BITOR Undocumented
Constant BITRIGHTSHIFT Undocumented
Constant BITXOR Undocumented
Constant DIV Undocumented
Constant MOD Undocumented
Constant MUL Undocumented
Constant POW Undocumented
Constant SUB Undocumented
Method __add__ Undocumented
Method __and__ Undocumented
Method __mod__ Undocumented
Method __mul__ Undocumented
Method __neg__ Undocumented
Method __or__ Undocumented
Method __pow__ Undocumented
Method __radd__ Undocumented
Method __rand__ Undocumented
Method __rmod__ Undocumented
Method __rmul__ Undocumented
Method __ror__ Undocumented
Method __rpow__ Undocumented
Method __rsub__ Undocumented
Method __rtruediv__ Undocumented
Method __sub__ Undocumented
Method __truediv__ Undocumented
Method ​_combine Undocumented
Method bitand Undocumented
Method bitleftshift Undocumented
Method bitor Undocumented
Method bitrightshift Undocumented
Method bitxor Undocumented
def __init__(self, queryset, output_field=None, **extra):
def _resolve_output_field(self):

Attempt to infer the output type of the expression. If the output fields of all source fields match then, simply infer the same type here. This isn't always correct, but it makes sense most of the time.

Consider the difference between 2 + 2 and 2 / 3. Inferring the type here is a convenience for the common case. The user should supply their own output_field with more complex computations.

If a source's output field resolves to None, exclude it from this check. If all sources are None, then an error is raised higher up the stack in the output_field property.

def as_sql(self, compiler, connection, template=None, query=None, **extra_context):

Responsible for returning a (sql, [params]) tuple to be included in the current query.

Different backends can provide their own implementation, by providing an as_{vendor} method and patching the Expression:

``` def override_as_sql(self, compiler, connection):

# custom logic return super().as_sql(compiler, connection)

setattr(Expression, 'as_' + connection.vendor, override_as_sql) ```

Arguments:
  • compiler: the query compiler responsible for generating the query. Must have a compile method, returning a (sql, [params]) tuple. Calling compiler(value) will return a quoted value.
  • connection: the database connection used for the current query.
Return: (sql, params)
Where sql is a string containing ordered sql parameters to be replaced with the elements of the list params.
def copy(self):
def get_external_cols(self):

Undocumented

def get_group_by_cols(self, alias=None):
def get_source_expressions(self):
def set_source_expressions(self, exprs):
contains_aggregate: bool =
empty_result_set_value =

Undocumented

template: str =

Undocumented

extra =

Undocumented

query =

Undocumented

@property
external_aliases =

Undocumented