def get_object(self, queryset=None): if queryset is None: queryset = self.get_queryset() pk = self.kwargs.get(self.pk_url_kwarg, None) if getattr(self, 'convert_pk', False): pk = charid.to_int(pk) if pk is not None: queryset = self.get_object_qs(queryset, pk) else: slug = self.kwargs.get(self.slug_url_kwarg, None) if slug is not None: slug_field = self.get_slug_field() queryset = queryset.filter(**{slug_field: slug}) else: raise AttributeError("Generic detail view %s must be called with " "either an object pk or a slug." % self.__class__.__name__) try: obj = queryset.get() if not self.validate_object(obj): raise RuntimeError('not validated') except ObjectDoesNotExist: raise Http404(_("No %(verbose_name)s found matching the query") % {'verbose_name': queryset.model._meta.verbose_name}) except RuntimeError as error: raise Http404(error) return obj
def to_python(self, value): try: value = unicode(charid.to_int(value)) except: pass return super(CharidModelChoiceField, self).to_python(value)