Django

Code

Changeset 991

Show
Ignore:
Timestamp:
10/22/05 16:18:53 (3 years ago)
Author:
adrian
Message:

Fixed #681 -- get_in_bulk no longer assumes PK fields are called id. Also added unit tests to confirm. Thanks, Jeremy Dunck

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/meta/__init__.py

    r878 r991  
    13611361    id_list = args and args[0] or kwargs['id_list'] 
    13621362    assert id_list != [], "get_in_bulk() cannot be passed an empty list." 
    1363     kwargs['where'] = ["%s.id IN (%s)" % (opts.db_table, ",".join(map(str, id_list)))] 
     1363    kwargs['where'] = ["%s.%s IN (%s)" % (opts.db_table, opts.pk.column, ",".join(['%s'] * len(id_list)))] 
     1364    kwargs['params'] = id_list 
    13641365    obj_list = function_get_list(opts, klass, **kwargs) 
    1365     return dict([(o.id, o) for o in obj_list]) 
     1366    return dict([(getattr(o, opts.pk.column), o) for o in obj_list]) 
    13661367 
    13671368def function_get_latest(opts, klass, does_not_exist_exception, **kwargs): 
  • django/trunk/tests/testapp/models/custom_pk.py

    r682 r991  
    5454>>> employees.get_list(last_name__exact='Jones') 
    5555[Dan Jones, Fran Jones] 
     56>>> employees.get_in_bulk(['ABC123', 'XYZ456']) 
     57{'XYZ456': Fran Jones, 'ABC123': Dan Jones} 
    5658 
    5759>>> b = businesses.Business(name='Sears') 
     
    6365>>> fran.get_business_list() 
    6466[Sears] 
     67>>> businesses.get_in_bulk(['Sears']) 
     68{'Sears': Sears} 
    6569"""