﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
14786	get_db_prep_lookup call get_prep_value twice for each value if prepared == False	homm	nobody	"In db.models.fields.Field ''get_db_prep_lookup()'' check if value is prepared and prepare it:
{{{
def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):
    ""Returns field's value prepared for database lookup.""
    if not prepared:
        value = self.get_prep_lookup(lookup_type, value)
}}}
''get_prep_lookup()'' call ''get_prep_value()'' for every value.

But look next:
{{{
elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
    return [self.get_db_prep_value(value, connection=connection, prepared=prepared)]
elif lookup_type in ('range', 'in'):
    return [self.get_db_prep_value(v, connection=connection, prepared=prepared) for v in value]
}}}
Prepared flag not changed and ''get_db_prep_value()'' call ''get_prep_value()'' through ''get_db_prep_value()'' again!

I think ''get_db_prep_lookup()'' should call ''get_db_prep_value()'' always with prepared == True.
{{{
elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
    return [self.get_db_prep_value(value, connection=connection, prepared=True)]
elif lookup_type in ('range', 'in'):
    return [self.get_db_prep_value(v, connection=connection, prepared=True) for v in value]
}}}

This bug is still unnoticed because in standard ORM ''get_db_prep_lookup()'' always calls with prepared == True."		new	Database layer (models, ORM)	1.2					Unreviewed	0	0	0	0		
