示例#1
0
    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
示例#2
0
 def to_python(self, value):
     try:
         value = unicode(charid.to_int(value))
     except:
         pass
     return super(CharidModelChoiceField, self).to_python(value)