Skip to content

Commit

Permalink
Remove JoinQueryset.get_quoted_query()
Browse files Browse the repository at this point in the history
Pass the parameters to the DB API instead of quoting them ourselves.

(cherry picked from commit 2b2110f)
  • Loading branch information
mthuurne authored and foarsitter committed May 2, 2024
1 parent 9e71a46 commit c8cb822
Showing 1 changed file with 2 additions and 17 deletions.
19 changes: 2 additions & 17 deletions model_utils/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,21 +303,6 @@ class SoftDeletableManager(SoftDeletableManagerMixin, models.Manager):

class JoinQueryset(models.QuerySet):

def get_quoted_query(self, query):
query, params = query.sql_with_params()

# Put additional quotes around string.
params = [
f'\'{p}\''
if isinstance(p, str) else p
for p in params
]

# Cast list of parameters to tuple because I got
# "not enough format characters" otherwise.
params = tuple(params)
return query % params

def join(self, qs=None):
'''
Join one queryset together with another using a temporary table. If
Expand Down Expand Up @@ -359,7 +344,7 @@ def join(self, qs=None):
new_qs = self.model.objects.all()

TABLE_NAME = 'temp_stuff'
query = self.get_quoted_query(qs.query)
query, params = qs.query.sql_with_params()
sql = '''
DROP TABLE IF EXISTS {table_name};
DROP INDEX IF EXISTS {table_name}_id;
Expand All @@ -368,7 +353,7 @@ def join(self, qs=None):
'''.format(table_name=TABLE_NAME, fk_column=fk_column, query=str(query))

with connection.cursor() as cursor:
cursor.execute(sql)
cursor.execute(sql, params)

class TempModel(models.Model):
temp_key = models.ForeignKey(
Expand Down

0 comments on commit c8cb822

Please sign in to comment.