This is a simple example that shows how to convert the
object_detail generic view to the class based
@permission_required('b2c.view_b2ctrack') def view_track(request,id): return object_detail(request, queryset=B2CTrack.objects.all(), object_id=id, template_name='track_detail.html')
class TrackDetailView(DetailView): template_name = 'track_detail.html' model = B2CTrack ## Override dispatch to apply the permission decorator @method_decorator(permission_required('b2c.view_b2ctrack')) def dispatch(self, *args, **kwargs): return super(TrackDetailView, self).dispatch(*args, **kwargs)
Only odd thing I encountered was that the new View wants to see the ID of the object named ‘pk’, instead of ‘id’ that I was using. The DEV branch of Django includes the
pk_url_kwarg variable that allows a rename, but it isn’t available in v1.3.
Note that I could have used
queryset instead of
model to specify the data source. Either will give the same result in this example.