class user_lock(type):
    @staticmethod
    def queryset(self, request):
        qs = super(self.__class__, self).queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(**{self.__target__:request.user})
    def __new__(self, name, bases, dic):
        dic['queryset'] = self.queryset
        return type(name, bases, dic)

class MyAdmin (ModelAdmin):
    __metaclass__ = user_lock
    __target__ = 'user'