def join(self, dest, join_type=None, on=None):
src = self._query_ctx
if on is None:
require_join_condition = join_type != JOIN.CROSS and (
isinstance(dest, SelectQuery) or
(isclass(dest) and not src._meta.rel_exists(dest)))
if require_join_condition:
raise ValueError('A join condition must be specified.')
elif join_type == JOIN.CROSS:
raise ValueError('A CROSS join cannot have a constraint.')
elif isinstance(on, basestring):
on = src._meta.fields[on]
self._joins.setdefault(src, [])
self._joins[src].append(Join(src, dest, join_type, on))
if not isinstance(dest, SelectQuery):
self._query_ctx = dest
评论列表
文章目录