fixed use of 'id', replaced with 'pk'

fix_request_path_info
Bert Constantin 2010-02-02 08:25:32 +01:00
parent 2e17a184c0
commit ecaed2a71f
1 changed files with 8 additions and 9 deletions

View File

@ -134,16 +134,15 @@ class PolymorphicQuerySet(QuerySet):
# - store objects that already have the correct class into "results" # - store objects that already have the correct class into "results"
self_model_content_type_id = ContentType.objects.get_for_model(self.model).pk self_model_content_type_id = ContentType.objects.get_for_model(self.model).pk
for base_object in base_result_objects: for base_object in base_result_objects:
ordered_id_list.append(base_object.id) ordered_id_list.append(base_object.pk)
# this object is not a derived object and already the real instance => store it right away # this object is not a derived object and already the real instance => store it right away
if (base_object.polymorphic_ctype_id == self_model_content_type_id): if (base_object.polymorphic_ctype_id == self_model_content_type_id):
results[base_object.id] = base_object results[base_object.pk] = base_object
# this object is derived and its real instance needs to be retrieved # this object is derived and its real instance needs to be retrieved
# => store it's id into the bin for this model type # => store it's id into the bin for this model type
else: else:
idlist_per_model[base_object.get_real_instance_class()].append(base_object.id) idlist_per_model[base_object.get_real_instance_class()].append(base_object.pk)
# for each model in "idlist_per_model" request its objects (the full model) # for each model in "idlist_per_model" request its objects (the full model)
# from the db and store them in results[] # from the db and store them in results[]
@ -152,7 +151,7 @@ class PolymorphicQuerySet(QuerySet):
# copy select related configuration to new qs # copy select related configuration to new qs
qs.dup_select_related(self) qs.dup_select_related(self)
# TODO: defer(), only() and annotate(): support for these would be around here # TODO: defer(), only() and annotate(): support for these would be around here
for o in qs: results[o.id] = o for o in qs: results[o.pk] = o
# re-create correct order and return result list # re-create correct order and return result list
resultlist = [ results[ordered_id] for ordered_id in ordered_id_list if ordered_id in results ] resultlist = [ results[ordered_id] for ordered_id in ordered_id_list if ordered_id in results ]
@ -603,7 +602,7 @@ class PolymorphicModel(models.Model):
Each method call executes one db query (if necessary).""" Each method call executes one db query (if necessary)."""
real_model = self.get_real_instance_class() real_model = self.get_real_instance_class()
if real_model == self.__class__: return self if real_model == self.__class__: return self
return real_model.objects.get(id=self.id) return real_model.objects.get(pk=self.pk)
# Hack: # Hack:
# For base model back reference fields (like basemodel_ptr), # For base model back reference fields (like basemodel_ptr),
@ -647,7 +646,7 @@ class PolymorphicModel(models.Model):
super(PolymorphicModel, self).__init__(*args, **kwargs) super(PolymorphicModel, self).__init__(*args, **kwargs)
def __repr__(self): def __repr__(self):
out = self.__class__.__name__ + ': id %d, ' % (self.id or - 1); last = self._meta.fields[-1] out = self.__class__.__name__ + ': id %d, ' % (self.pk or - 1); last = self._meta.fields[-1]
for f in self._meta.fields: for f in self._meta.fields:
if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue
out += f.name + ' (' + type(f).__name__ + ')' out += f.name + ' (' + type(f).__name__ + ')'
@ -658,7 +657,7 @@ class PolymorphicModel(models.Model):
class ShowFields(object): class ShowFields(object):
""" model mixin that shows the object's class, it's fields and field contents """ """ model mixin that shows the object's class, it's fields and field contents """
def __repr__(self): def __repr__(self):
out = 'id %d, ' % (self.id); last = self._meta.fields[-1] out = 'id %d, ' % (self.pk); last = self._meta.fields[-1]
for f in self._meta.fields: for f in self._meta.fields:
if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue
out += f.name out += f.name
@ -674,7 +673,7 @@ class ShowFields(object):
class ShowFieldsAndTypes(object): class ShowFieldsAndTypes(object):
""" model mixin, like ShowFields, but also show field types """ """ model mixin, like ShowFields, but also show field types """
def __repr__(self): def __repr__(self):
out = 'id %d, ' % (self.id); last = self._meta.fields[-1] out = 'id %d, ' % (self.pk); last = self._meta.fields[-1]
for f in self._meta.fields: for f in self._meta.fields:
if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue
out += f.name + ' (' + type(f).__name__ + ')' out += f.name + ' (' + type(f).__name__ + ')'